2017-01-20 34 views
0
CREATE VIEW USER_VIEW AS 
    (
    SELECT USERS.ID ID, 
    USERS.EMAIL EMAIL, 
    USERS.PASSWORD PASSWORD, 
    ADDDATE(USERS.START_DATE, INTERVAL USERS.DURATION MONTH) "EXPIRY_DATE", 
    DATEDIFF(EXPIRY_DATE, NOW()) "STATUS"); 

MySQL是產生此錯誤消息:如何在創建視圖時使用mysql中的ADDDATE函數?

1109 - 未知表 '用戶' 在字段列表

+0

您的查詢缺少'from'子句。 –

回答

0

我會爲這樣寫:

CREATE VIEW USER_VIEW AS 
    SELECT u.ID, u.EMAIL, u.PASSWORD, 
      DATE_ADD(u.START_DATE, INTERVAL u.DURATION MONTH) as EXPIRY_DATE, 
      DATEDIFF(DATE_ADD(u.START_DATE, INTERVAL u.DURATION MONTH), CURDATE()) as status 
    FROM users u; 

注:

  • 您需要一個FROM條款。這是您查詢中的重大錯誤。
  • 推測地,EXPIRY_DATE對於status引用了前一行中的表達式。這是不允許的。你必須重複表達。
  • 沒有必要重複列別名。當您選擇u.id時,列名稱爲id
  • 不要對列別名使用單引號。選擇不需要轉義的名稱。如果您必須避開名稱,請使用反引號。
  • 我不明白爲什麼時間組件會對「狀態」感興趣,所以我將NOW()更改爲CURDATE()
相關問題