我有一个包含这样一个复合键的表:
========TABLE========
key_a_col | key_b_col
场景:
key_b 是 'foo',在 key_a 下有一个 'bar' 和 'baz' 条目。另一个 key_b 'fiz' 有 'bar' 和 'raz'。
像这样:
========TABLE========
key_a_col | key_b_col
'bar' | 'foo'
'baz' | 'foo'
'bar' | 'fiz'
'raz' | 'fiz'
我想选择在 key_a_col 中同时有“bar”和“baz”与之配对的所有 key_b 条目。所以 'foo' 会被返回(bar|foo 和 baz|foo 存在),而 'fiz' 不会(只有 fiz|bar 匹配)。
我怎样才能做到这一点?
最佳答案
ypercube 的链接应该给你一个想法,但如果你想更进一步到 N 个条件,你将必须进行 N 个连接。
这是另一种方法,您可以使用它来执行任意条件而无需连接。用你的 'biz' 和 'baz' 创建一个表 Conditions
SELECT DISTINCT col_b FROM Table t1
WHERE ( SELECT COUNT(*) FROM Table t2
INNER JOIN Condition c on t2.key_b = c.condition
WHERE t1.key_a = t2.key_a
GROUP BY t1.key_a) =
(SELECT COUNT(*) FROM CONDITION)
关于mysql - SQL选择基于多行键的两部分组合键的一半?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10238721/