mysql – 数据库:如果任何行中的字段X的值为Y,则排除’group by’组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 数据库:如果任何行中的字段X的值为Y,则排除’group by’组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1056字,纯文字阅读大概需要2分钟。
内容图文
![mysql – 数据库:如果任何行中的字段X的值为Y,则排除’group by’组](/upload/InfoBanner/zyjiaocheng/906/705329968ad8405483a6f2ea36495ff7.jpg)
我正在使用MySQL.
(我正在剥离不相关的连接以保持这一点更清晰)
我正在尝试选择公司的地址,按company_id进行分组,但如果他们在特定国家/地区拥有任何地址(ID为242),则排除整个用户
所以我尝试的第一个查询是:
SELECT c.company_id
FROM companies c
NATURAL JOIN addresses a
WHERE a.country_id != 15
GROUP BY c.company_id
根据我的理解,这首先选择select,然后排除country_id为15的行,然后返回其余行的company_id,这些行是不同的,因为它们已被分组.
因此,这将返回任何在国家/地区之外至少有一个地址的公司.我需要的是排除在该国家/地区拥有地址的任何公司.
我怎样才能做到这一点?
解决方法:
SELECT c.company_id
FROM companies c
NATURAL JOIN addresses a
WHERE NOT EXISTS
(SELECT * FROM addresses a1
WHERE c.company_id = a1.company_id AND a1.country_id = 15)
GROUP BY c.company_id
或者,您可以使用另一个连接而不是存在子查询.使用此方法可能会获得更好的性能,因为子查询只能解析一次.
SELECT c2.company_id
FROM (SELECT c.company_id
FROM companies c
NATURAL JOIN addresses a
GROUP BY c.company_id) AS c2
LEFT JOIN addresses a2
ON a2.company_id = c2.company_id AND a2.country_id = 15
WHERE a2.company_id IS NULL
内容总结
以上是互联网集市为您收集整理的mysql – 数据库:如果任何行中的字段X的值为Y,则排除’group by’组全部内容,希望文章能够帮你解决mysql – 数据库:如果任何行中的字段X的值为Y,则排除’group by’组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。