簡體   English   中英

我的SQL查詢的``where子句''中的未知列``expiry_date''

[英]Unknown column 'expiry_date' in 'where clause' my sql query

我有多個表,正在使用以下查詢按expiry_date篩選尚未過期的記錄。

我的查詢:

SELECT

    MT.id,
    CONCAT(MEM.name,' ',MEM.last_name) AS name,
    IFNULL((SELECT MAX(MFT.membership_end_date) 
        FROM membership_future_transaction AS MFT 
        WHERE MFT.membership_transaction_id = MT.id),MM.end_date) AS expiry_date,
    MEM.phone,
    MEM.email,
    MMST.name AS membership_name,
    MMST.price,
    MMST.session
FROM
    membership_transaction AS MT
    LEFT JOIN member_master AS MEM ON MEM.id = MT.member_id
    LEFT JOIN members_membership AS MM ON MM.membership_transaction_id = MT.id
    LEFT JOIN membership_master AS MMST ON MMST.id = MT.membership_id
WHERE
    MT.is_casual = 'No'
    AND MT.is_deleted = 'No'
    AND MM.is_cancelled = 'No'
    AND expiry_date >= '2016-01-01'"

但是我在“ where子句”錯誤中得到了未知列“ expiry_date”,請幫助我在這里缺少什么。

MySQL有一個漂亮的也許功能,使您可以使用having用別名。 因此,如果將where子句更改為:

WHERE MT.is_casual = 'No' AND
      MT.is_deleted = 'No' AND
      MM.is_cancelled = 'No'
HAVING expiry_date >= '2016-01-01'"

然后它應該工作。 當然,這對您期望的group by查詢無效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM