例如,我有这些表:
答:
身份证等。
---|--------------
1 |布拉
2 |模具
3 |布拉
乙:
a| id |键|值
-----|-----|
1 | x |甲
1 | y | b年
1 | z | c
2 | x |甲
2 | z | d
3 | x |甲
3 | z | c
如何查询表a中的所有行,这些行的id链接在表b中,键x和值a、键z和值c
在本例中,结果应该是第1行和第3行。
我真的无法理解,任何帮助都将不胜感激。
最佳答案
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
获取所有相关记录。再次加入,你就会有你的结果。