[英]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.