如何编写SQL查询筛选仅关联Col4为True的Col1字段值
筛选所有关联记录Col4均为true的Col1值
可以通过以下几种常见SQL写法实现需求:
方法一:使用NOT EXISTS排除不符合条件的记录
核心思路是找出不存在任何关联到Table2后Col4为false的记录的Col1值:
SELECT DISTINCT t1.Col1 FROM Table1 t1 WHERE NOT EXISTS ( SELECT 1 FROM Table1 t1_inner JOIN Table2 t2 ON t1_inner.Col2 = t2.Col3 WHERE t1_inner.Col1 = t1.Col1 AND t2.Col4 = false );
方法二:使用GROUP BY + HAVING统计验证
先关联两张表,按Col1分组后,统计每组中Col4为false的记录数,要求该数量为0:
SELECT t1.Col1 FROM Table1 t1 JOIN Table2 t2 ON t1.Col2 = t2.Col3 GROUP BY t1.Col1 HAVING COUNT(CASE WHEN t2.Col4 = false THEN 1 END) = 0;
方法三:利用布尔值特性的简化写法(兼容性稍差)
如果你的数据库支持将布尔值视为数值(true=1,false=0),可以通过取最小值判断所有记录是否为true:
SELECT t1.Col1 FROM Table1 t1 JOIN Table2 t2 ON t1.Col2 = t2.Col3 GROUP BY t1.Col1 HAVING MIN(t2.Col4) = true;
以上三种方法在你的示例数据中都会返回B和C,A因存在关联到Y(Col4=false)的记录会被排除。
内容的提问来源于stack exchange,提问作者Rpp
相关产品推荐
相关产品推荐

