gpt4 book ai didi

sql-server-2008 - 带有多个 AND 和 OR 的 SQL Select

转载 作者:行者123 更新时间:2023-12-04 13:20:24 24 4
gpt4 key购买 nike

我坐在一个逻辑问题上,我只是越来越困惑自己。

示例表

身份证 |客户 ID |任务 |确认 |取消 |完全的

1 | 20 |文字 | 1 | 0 | 0
2 | 20 |文字 | 1 | 1 | 0
3 | 20 |文字 | 1 | 0 | 1
4 | 17 |文字 | 0 | 1 | 0
5 | 17 |文字 | 1 | 0 | 0
6 | 20 |文字 | 1 |空 |空值
7 | 20 |文字 | 0 | 1 |空值

我希望选择 custID = 20 的所有任务并确认 = 1。如果任务被取消=1 或完成=1,则不返回记录。

在这种情况下,返回的行将是 1 和 6。

到目前为止我的查询是

SELECT *
FROM table1
WHERE
(CustID = 20 AND Confirmed = 1 AND Cancelled <> 1 AND Completed <> 1) OR
(CustID = 20 AND Confirmed = 1 AND Cancelled = 1 AND Completed <> 1) OR
(CustID = 20 AND Confirmed = 1 AND Cancelled <> 1 AND Completed = 1)

任何帮助将不胜感激。

最佳答案

您可以将其简化为:

SELECT * FROM table1
WHERE CustID = 20
AND Confirmed = 1
AND (Cancelled <> 1 OR Cancelled IS NULL)
AND (Completed <> 1 OR Completed IS NULL)

在比较实际值与 NULL 时,您必须小心(并且非常明确),因为等式和不等式都将它们排除在外。

关于sql-server-2008 - 带有多个 AND 和 OR 的 SQL Select,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12088119/

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