繁体   English   中英

SQL 加入并获取所有符合条件的

[英]SQL Join and get all that match a condition

我有两个这样的表:

表格1

Col1 Col2
一个 X
X
C X
一个
Z

表2

Col3 Col4
X 真的
错误的
Z 真的

如何编写 SQL 查询,以便获得 Col1 值,其中该行仅具有与表 2 的 Col2 连接,表 2 的 col 4 为真且不得包含假值。

因此,对于示例表,返回的值将是 B 和 C。 A 不会被返回,因为对表 2 的行 Y 的连接将是错误的。

所以这个查询需要获取 Col1 中的唯一值列表,然后从 Col2 上的连接 table1 和 table2 中,然后从唯一列表中,获取在这个连接表上只有真实值的那些。

您可以连接表并将聚合与HAVING子句中的条件一起使用:

SELECT t1.Col1
FROM Table1 t1 INNER JOIN Table2 t2
ON t2.Col3 = t1.Col2
GROUP BY t1.Col1
HAVING MIN(t2.Col4) = true; -- just HAVING MIN(t2.Col4) would also work

如果特定Col1Col4的最小值为true (被解释为 1),这意味着不存在被解释为 0 的false

请参阅演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM