Mysql
where子句在視圖mysql中返回空行
我有兩個表,其架構如下:
INCOME TABLE: INCOME_ID, INCOME_NAME, INCOME_DATE OUTCOME TABLE: OUTCOME_ID, OUTCOME_NAME, OUTCOME_DATE EXAMPLE DATA INCOME INCOME_ID | INCOME_NAME | INCOME_DATE 1 | FIRST EXMPL | 24-07-2016 2 | SEC EXAMPLE | 25-07-2016 ETC EXAMPLE DATA OUTCOME OUTCOME_ID | OUTCOME_NAME | OUTCOME_DATE 1 | FIRST | 24-07-2016 2 | SEC | 03-08-2016 ETC
所以我使用 union all 來組合這些表
SELECT INCOME_DATE AS DATE, INCOME_NAME AS NAME FROM INCOME UNION ALL SELECT OUTCOME_DATE, OUTCOME NAME FROM OUTCOME
我使用上面的查詢來創建視圖
CREATE VIEW V_BALANCE AS SELECT INCOME_DATE AS DATE, INCOME_NAME AS NAME UNION ALL SELECT OUTCOME_DATE, OUTCOME_NAME FROM OUTCOME
視圖已成功創建,但是當我想在視圖中添加 where 子句時,它返回空行
SELECT * FROM V_BALANCE WHERE DATE BETWEEN = '24-07-2016' AND '03-08-2016'
假設這兩個日期列確實是
DATE
列,問題是您沒有在日期文字中使用正確的格式。使用 ANSI 格式:SELECT * FROM V_BALANCE WHERE DATE BETWEEN '2016-07-24' AND '2016-08-03' ;
有關其他選項,請參閱文件:日期和時間文字。
如果兩個日期列不是
DATE
someCHAR
orVARCHAR
,那麼問題就在那裡。將列轉換為正確的日期類型,否則比較將不正確。
您的程式碼中有錯字:
你寫了
SELECT * FROM V_BALANCE WHERE DATE BETWEEN = '24-07-2016' AND '03-08-2016'
而你應該寫
SELECT * FROM V_BALANCE WHERE DATE BETWEEN '24-07-2016' AND '03-08-2016'
我知道當你回讀程式碼時,這種事情很難被發現。我也沒有看到 - 我必須在我的客戶出現錯誤之前創建視圖並實際執行您的命令。
您的客戶端工具應該就這麼明顯的事情向您發出警告。
建議 - 也許你應該看看改變客戶端工具?ps 歡迎來到論壇。