php - MySQL 通过子选择变量过滤 WHERE
问题描述
我有一个带有子选择语句的查询,我正在寻找一种在 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)过滤结果。
解决方案
Store table_filter_date
in a variable and use that in your WHERE
clause:
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'
推荐阅读
- flask - 关系“模型名称”已经存在
- pyspark - 如何通过配对另一列的元素来创建一个新列?
- docker - 错误:traefik,xdbautomationworker,容器不健康
- javascript - Javascript如何循环子元素的子元素
- html - 搜索栏/ autoscoll
- javascript - 在 Angular 中播放本地保存的视频
- javascript - __ob__:观察者而不是我的对象数组( JSON.parse(JSON.stringify(obj)) NOT WORKING )
- python - 对“美国/东部”区域使用“groupby”时输出错误
- c# - 螺旋矩阵从左下角开始
- django - 在循环中修改后如何过滤 Django 查询集