sql-server - 在同一列上使用多个 WHERE 条件进行选择时 AND 的简写
问题描述
我有PETS
带有 columns的表格Index
,Owner
并Animal
带有以下行:
Index, Owner, Animal
--------------------
1, Anne, cat
2, Anne, dog
3, Anne, rabbit
4, Bill, dog
5, Bill, dog
6, Bill, rabbit
7, John, cat
8, John, dog
9, Johh, parrot
10, Susy, rabbit
11, Susy, parrot
12, Susy, parrot
我需要两个输出:获取拥有的所有所有者
- 一只猫或一只狗
- 一只猫和一只狗
IN
我作为速记运算符得到的第一个输出OR
:
SELECT DISTINCT Owner FROM PETS WHERE Animal IN ('cat','dog')
是否有等效的速记运算符AND
?这个线程中的解决方案HAVING COUNT
不太有效,因为它返回'Bill'
了'dog'
两次,但是没有'cat'
.
解决方案
没有速记,不,但我个人会使用HAVING
带有条件聚合的条件聚合来拥有这两个逻辑:
SELECT Owner
FROM dbo.Pets
GROUP BY Owner
HAVING COUNT(CASE Animal WHEN 'dog' THEN 1 END) > 0
AND COUNT(CASE Animal WHEN 'cat' THEN 1 END) > 0;
而且,显然,您可以通过将 更改AND
为OR
.
推荐阅读
- python-2.7 - TensorFlow 代码阅读:`sess.run()` 除了评估还有什么作用?
- sql - ORACLE - 如何对不存在的行使用 CASE WHEN EXISTS 语句?
- postgresql - 从 postgres docker 容器中的环境变量中删除敏感信息
- javascript - 在 wwwroot 中引用静态 JavaScript 文件的问题 - .Net Core 2.2 Signalr
- apache-flink - apache flink中的处理是什么意思?
- c# - 如何使用来自不同文件的不同类中的方法?
- sqlite - SQLite 中的 IF ELSE 条件
- laravel - 未知的自定义元素:
跳过“名称”选项 - nuget - Teamcity nuget依赖触发器失败
- sql - Pyspark sql 查询不工作,有问题的 group by