mysql - 如何选择另一个表中没有链接记录为空的记录?
问题描述
我有以下 SQL:
SELECT tournaments_blg.tournament_id_blg
FROM matches_blg LEFT JOIN tournaments_blg ON tournaments_blg.tournament_id_blg = matches_blg.tournament_id_blg
WHERE matches_blg.match_id_op IS NULL
GROUP BY tournaments_blg.tournament_id_blg
这会选择tournaments_blg.tournament_id_blg
其中任何一个为 的matches_blg.match_id_op
所有位置NULL
。
tournaments_blg.tournament_id_blg
如果全部matches_blg.match_id_op
都是,我将如何只选择全部NULL
?
解决方案
SELECT tb.tournament_id_blg
FROM tournaments_blg tb
LEFT JOIN matches_blg mb ON tb.tournament_id_blg = mb.tournament_id_blg
AND mb.match_id_op IS NOT NULL
WHERE mb.tournament_id_blg IS NULL
或者
SELECT tb.tournament_id_blg
FROM tournaments_blg tb
WHERE NOT EXISTS ( SELECT NULL
FROM matches_blg mb
WHERE tb.tournament_id_blg = mb.tournament_id_blg
AND mb.match_id_op IS NOT NULL )
推荐阅读
- python - 根据条件合并相邻行
- java - 如何创建 REST API 然后 REST API 会将对象/字符串放入 ActiveMQ
- angular - 检索选定的节点不显示
- c++ - C ++迭代结构的成员
- sql-server - 为什么 Hibernate HSQL Concat 不适用于 MSSQL?
- vue.js - 是否可以从另一个 vue 组件调用一个 vue 组件中的函数?
- sql - 我想要所有不符合条件的用户
- ruby-on-rails-5 - 删除 Rails 5 中 required true 添加的默认下拉选项
- azure - Azure DNS 记录不传播
- python - 如何删除两列中的重复项?