gpt4 book ai didi

MySQL 子查询 AND 'NOT IN'

转载 作者:行者123 更新时间:2023-11-30 23:35:12 25 4
gpt4 key购买 nike

抱歉,如果之前已经回答过这个问题;我有点不确定如何最好地描述这个问题,不要介意搜索它。但是这里...

基本上我有一个“项目”表,其中包含“id”和“标题”。我还有一个“projects_history”表,其中包含 (IF) 项目设置为存档时的信息( bool 值)。它有一个引用项目的“pid”键——每个项目在更新时可以有多个记录(以便跟踪谁将值设置为什么)。

还有一个“project_enquiries”表,其中包含有关为项目提出的查询的信息,因此有一个引用“projects”的“pid”键。类似地,有一个“project_enquiry_history”表记录何时 (IF) 查询设置为关闭( bool 值)。它有一个引用 project_enquiry 的“eid”键 - 每个查询在更新时可以有多个记录(以便跟踪谁将值设置为什么)。

我的查询旨在提取尚未存档的项目(因此要么在'project_history'中没有记录,要么该项目的最新记录'archived'= 0),其中的查询仍在打开(因此“project_enquiry_history”中没有记录,或者查询的最新记录有“打开”= 1)。

我真的很纠结从哪里开始查询。

最佳答案

第一件事是,如果 project_history 中没有记录,那么您需要对 projects 表进行左连接project_history 表上使用您的项目 ID 来发现它。结果中的条目将在 project_history 的列中为空,其中没有相应的条目。然后您可以链接该过程,使用结果在“project_enquiry_history”上执行另一个左连接以查找没有条目的项目。

您也可以像往常一样使用这些结果来选择数据。

它看起来像:

SELECT * from project p LEFT OUTER JOIN project_history ph ON P.ID=ph.pid
LEFT OUTER JOIN project_enquiry_history peh ON peh.ID=ph.pid
WHERE(存档为 NULL 或存档=0)
AND(open 为 NULL OR open=1)

如果您使用时间戳等,您可能需要调整它以找到最新的。

关于MySQL 子查询 AND 'NOT IN',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8053339/

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