mysql - 返回仅拥有汽车、摩托车或汽车和摩托车的人员列表

标签 mysql sql

Table 1

Name, Vehicle
P1, Car
P1, Motorcylce
P1, Truck
P1, Helicopter
P2, Car
P3, Motorcycle
P4, Motorcycle
P4, Car
P5, Car
P5, Truck
P6, Motorcycle
P6, Truck
P7 Truck

如何查询上表,以便仅返回拥有汽车或摩托车或必须同时拥有汽车和摩托车的人。

所以 仅,

P2 -> only has a car (valid)
P3 -> only has a motorcyle (valid)
P4 -> has both car and motorcycle (valid)

被退回

最佳答案

这是一种条件聚合的方法:

select name
from yourtable
group by name
having count(case when vehicle = 'Car' then 1
                  when vehicle = 'Motorcycle' then 1
             end) = count(*)

如果您不想返回拥有多于一辆汽车或摩托车的人员(即 P8 有 2 辆汽车),请使用 count(distinctvehicle) 来排除这些记录。不清楚您的帖子是否重要。

关于mysql - 返回仅拥有汽车、摩托车或汽车和摩托车的人员列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50974544/

相关文章:

sql - 声明终止。在语句完成错误之前最大递归 100 已用尽

sql - 在没有日志的情况下进行 SQL SERVER 数据库备份

mysql - 在连接查询中设置表名

mysql - 在 go 中使用 ssl 和证书连接到 mysql/mariadb

java - 使用 JdbcBatchItemWriter 保存在 mysql 数据库中时值发生更改

python SQL查询插入显示空行

sql - 删除具有重复值的行

MySQL创建带分隔符的存储过程语法

SQL返回重复结果

php - 一年前查询日期时间