gpt4 book ai didi

获取具有一个属性但不具有另一个属性的值的 SQL 语句

转载 作者:行者123 更新时间:2023-12-04 00:40:07 25 4
gpt4 key购买 nike

我需要一个 SQL 语句来查找表中 ActivityID = 1 但不是 ActivityID = 2 的所有 OrderID

所以这是一个示例表:

订单事件表:

OrderID  // ActivityID
1 // 1
1 // 2
2 // 1
3 // 1

因此在此示例中,OrderID - 1 的事件为 1 AND 2,因此不应作为结果返回。订单 2 和 3 有事件 1,但没有事件 2...因此它们应该作为结果返回。

最终结果应该是一个包含 OrderID 列的表,其中只有 2 和 3 作为行。

我之前尝试过的是:

select OrderID, ActivityID from OrderActivityTable where ActivityID = 1 AND NOT ActivityID = 2

那好像没有得到我想要的结果。我认为答案有点复杂。

最佳答案

您可以为此使用外部自联接:

SELECT *
FROM OrderActivityTable t1
LEFT JOIN OrderActivityTable t2
ON t1.OrderID = t2.OrderID AND t2.ActivityID = 2
WHERE t1.ActivityID = 1
AND t2.OrderID IS NULL

你也可以使用Mike Christensen的WHERE NOT IN解决方案,或者alfasin的相关子查询解决方案,但根据我的经验,这种方法通常具有最好的性能(我使用MySQL - 结果可能在其他实现中有所不同)。在理想情况下,DBMS 会认识到这些都是相同的,并等效地优化它们。

关于获取具有一个属性但不具有另一个属性的值的 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19778052/

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