簡體   English   中英

MySQL 通過子選擇變量過濾 WHERE

[英]MySQL Filter WHERE By Subselect Variable

我有一個帶有子選擇語句的查詢,我正在尋找一種在 where 子句中使用它的方法,例如:

SELECT      p.id as project_id, (
            SELECT      pfva.dateValue
            FROM        ProjectFieldValue pfva
            WHERE       (pfva.fieldKey = 'listing_date' AND p.id = project_id)
            LIMIT 1         
            ) as table_filter_date
FROM        Project p
JOIN        ProjectFieldValue pfv
 ON         p.id = pfv.project_id
WHERE       (fieldKey = 'contract_status' AND pfv.textValue IN ('Active'))
AND         table_filter_date BETWEEN '2020-06-06' AND '2020-12-12'

這似乎不起作用...

AND table_filter_date BETWEEN '2020-06-06' AND '2020-12-12'

我收到以下錯誤:

Unknown column 'table_filter_date' in 'where clause'

有什么方法可以在 HAVING 或 FIND_IN_SET 或 WHERE 中使用此值“table_filter_date”。 我基本上需要能夠以某種方式通過此變量以及開始和結束日期(使用 BETWEEN 和 AND)過濾結果。

table_filter_date存儲在變量中並在WHERE子句中使用它:

SELECT      p.id as project_id, ( @tfd := (
            SELECT      pfva.dateValue
            FROM        ProjectFieldValue pfva
            WHERE       (pfva.fieldKey = 'listing_date' AND p.id = project_id)
            LIMIT 1         
            ) ) as table_filter_date
FROM        Project p
JOIN        ProjectFieldValue pfv
 ON         p.id = pfv.project_id
WHERE       (fieldKey = 'contract_status' AND pfv.textValue IN ('Active'))
AND         @tfd BETWEEN '2020-06-06' AND '2020-12-12'

您可以通過將查詢包含為“表表達式”來生成此命名列。 例如:

select *
from ( -- table expression "x" starts
  SELECT    p.id as project_id, (
            SELECT      pfva.dateValue
            FROM        ProjectFieldValue pfva
            WHERE       (pfva.fieldKey = 'listing_date' AND p.id = project_id)
            LIMIT 1         
            ) as table_filter_date
  FROM      Project p
  JOIN      ProjectFieldValue pfv
   ON       p.id = pfv.project_id
  WHERE     (fieldKey = 'contract_status' AND pfv.textValue IN ('Active'))
) x -- table expression "x" ends
WHERE   table_filter_date BETWEEN '2020-06-06' AND '2020-12-12'

暫無
暫無

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

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