作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我坐在一个逻辑问题上,我只是越来越困惑自己。
示例表
身份证 |客户 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)
关于sql-server-2008 - 带有多个 AND 和 OR 的 SQL Select,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12088119/
我是一名优秀的程序员,十分优秀!