gpt4 book ai didi

mysql - SQL Left Join 但不希望左表中的所有记录

转载 作者:行者123 更新时间:2023-11-29 14:43:44 25 4
gpt4 key购买 nike

我有 2 个表 - 项目和状态更新。项目表包含 ID、优先级和状态(以及其他)字段,我的状态更新表包含项目 ID 和日期等字段。

我正在尝试构建一个查询,该查询将提取所有未完成或取消的高优先级项目,并告诉我哪些项目在过去 14 天内没有与其关联的状态更新。

我有以下内容,但它为我提供了左表中的所有项目,而不是过滤状态未完成或已取消的高优先级项目。

非常感谢任何帮助。

Select proj.id, proj.Priority, proj.status, proj.ProjectName,  status_tmp.statusdate,     status_tmp.statusdetail

FROM proj

LEFT JOIN (SELECT s1.*
FROM projectstatus AS s1
LEFT JOIN projectstatus AS s2
ON s1.statusproj = s2.statusproj AND s1.statusdate < s2.statusdate

WHERE s2.statusproj IS NULL ) as status_tmp

ON (proj.id=status_tmp.statusproj)

where proj.Priority='High' AND proj.status!='Cancelled' and
proj.status!='Completed' AND
status_tmp.statusdate < DATE_SUB(CURDATE(),INTERVAL 14 DAY) OR
status_tmp.statusdate IS null

最佳答案

尝试在 where 子句的最后部分添加括号,如下所示:

Select proj.id, proj.Priority, proj.status, proj.ProjectName,  status_tmp.statusdate,     status_tmp.statusdetail

FROM proj

LEFT JOIN (SELECT s1.*
FROM projectstatus AS s1
LEFT JOIN projectstatus AS s2
ON s1.statusproj = s2.statusproj AND s1.statusdate < s2.statusdate

WHERE s2.statusproj IS NULL ) as status_tmp

ON (proj.id=status_tmp.statusproj)

where proj.Priority='High' AND proj.status!='Cancelled' and
proj.status!='Completed' AND

(status_tmp.statusdate < DATE_SUB(CURDATE(),INTERVAL 14 DAY) OR
status_tmp.statusdate IS null )

关于mysql - SQL Left Join 但不希望左表中的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7456693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com