例如我有这些表:
A:
id | something etc. ---|-------------- 1 | bla 2 | die 3 | bla
B:
a_id | key | value -----|-----| 1 | x | a 1 | y | b 1 | z | c 2 | x | a 2 | z | d 3 | x | a 3 | z | c
如何进行查询,从表A中获取所有具有在表b中链接的id且具有键x和值a以及键z和值c的行 在这个例子中应该产生第1行和第3行。
我真的无法绕过它,任何帮助都会非常感激。
答案 0 :(得分:2)
select a.*
from a
join
(
select a_id
from b
group by a_id
having sum(key = 'x' and value = 'a') > 0
and sum(key = 'z' and value = 'c') > 0
) b_tmp on b_tmp.a_id = a.id
子查询从表b
获取所有相关记录。再加上你的结果吧。