2

我正在尝试使用 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,但我该如何选择呢?我想找到master_record_id包含 Katie W 和 Brian J 的...

有没有办法让我说“选择包含 Katie W 和 Brian J 的 master_record_id”?

4

3 回答 3

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'
于 2012-10-22T16:44:41.137 回答
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

于 2012-10-22T16:44:30.690 回答
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记录

于 2012-10-22T16:52:30.510 回答