1

次のようなテーブルがあります。

id | customer_id | code
-----------------------
1  |  1          | A
2  |  1          | B
3  |  2          | A
4  |  2          | D
5  |  3          | B
6  |  3          | C
6  |  3          | D

A と B に等しいコードを持つすべての顧客 ID を返す SQL クエリが必要です。上記のデータでは、これは customer_id 1 のみになります。

コードがそれぞれ独自の列である場合、これは単純なクエリになりますSELECT DISTINCT customer_id FROM tablename WHERE code = A AND code = B。ただし、複数の行で作成することはできないようです。

4

2 に答える 2

4

GROUP BY customer_idで a を使用できます。HAVING

select customer_id
from yourtable
where code in ('A', 'B')
group by customer_id
having count(distinct code) = 2

デモで SQL Fiddle を参照してください

テーブルからさらに多くのデータを返したい場合は、クエリを次のように拡張できます。

select *
from yourtable t1
where exists (select customer_id
              from yourtable t2
              where code in ('A', 'B')
                and t1.customer_id = t2.customer_id
              group by customer_id
              having count(distinct code) = 2)

デモで SQL Fiddle を参照してください

于 2013-02-12T18:47:48.327 に答える
1
select customer_id
from tablename
where code in ('A', 'B')
group by customer_id
having count(*) > 1
于 2013-02-12T18:48:39.397 に答える