[英]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
如果特定Col1
的Col4
的最小值为true
(被解释为 1),这意味着不存在被解释为 0 的false
。
请参阅演示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.