我正在尝试使用php和sql组合一个SELECT语句,但是我很难选择我想要的项目。
假设我的桌子看起来像这样......
master_record_id credit_id credit_value
118 5 Brian J
119 5 Brian J
120 7 Katie W
121 5 Brian J
121 7 Katie W
125 7 Katie W
我正在尝试找到哪个master_record_id
同时包含Katie W和Brian J.所以我选择了credit_value = Brian J OR Katie W
,这就是结果。
基于这个小选择,我可以看到我想要的答案是121
,但我该如何选择呢?我想找到包含Katie W和Brian J的master_record_id
......
有没有办法让我说,“选择包含Katie W和Brian J的master_record_id”?
答案 0 :(得分:7)
您需要使用自我加入:
SELECT a.master_record_id
FROM tablename a JOIN tablename b USING (master_record_id)
WHERE a.credit_value = 'Brian J'
AND b.credit_value = 'Katie W'
答案 1 :(得分:1)
select master_record_id
from your_table
where credit_value in ('Brian J', 'Katie W')
group by master_record_id
having count(distinct credit_value) = 2
您必须将having
子句中的值调整为in
子句中的值数。
答案 2 :(得分:0)
由于性能的原因,这不是最好的方法,但无论如何它应该起作用:
select master_record_id, credit_id, credit_value
from your_table
where master_record_id in (
select master_record_id from your_table where credit_value = 'Brian J')
and master_record_id in (
select master_record_id from your_table where credit_value = 'Katie W')
它将返回所有包含Katie W和Brian J的 master_record_id 记录