MySQL / MariaDB结构:
人
| id |
|----|
| 1 |
| 2 |
| 3 |
Car
| person_id | car |
|-----------|-------|
| 1 | Ford |
| 2 | Mazda |
| 3 | Ford |
| 3 | Mazda |
| 3 | BMW |
什么查询可以得到正好有1辆车的人,而且车不是马自达?
期望的输出是个人ID 1。
注意事项:
如果使用GROUP BY,则查询应该是完整的group by,否则会出现以下错误,并且不希望更改SQL配置。
“在没有GROUP BY的聚合查询中,SELECT列表的表达式#1包含非聚合列'X';这与sql_mode=only_full_group_by不兼容”
2条答案
按热度按时间cetgtptt1#
您可以使用聚合和
having
来过滤:我们可以直接从
car
表中获得结果。如果出于某种原因,需要从person
中取出相应的行,我们可以join
:oogrdqng2#
另一种选择是,在相关子查询上使用
EXISTS
运算符的否定,如下所示:demo