2016-04-07 13 views
0

「のように」:私が欲しいもの、使用する「または」、「と」同じ列の数倍

id  car 
1  A 
1  B 
1  C 
1  D 
2  A 
2  B 
2  C 
2  F 
3  A 
3  C 
3  E 
3  F 
3  G 

car("A" or "C") and "B"を持っている別の「ID」です。例えば:私がやったこと

id car 
1  A 
1  B 
1  C 
2  A 
2  B 
2  C 

select * from table where (car like "A" or car like"C") and (car like "B") 

だったが、それは私の空の行を提供します。

ヒント?

+3

あなたは**同じ**行の 'car'の2つの異なる値を探しています。それは可能ではありません。 – Barmar

+0

を使用するか、または: 'select *テーブルから車が「A」、車が「C」、車が「B」などの場合 –

+0

@Barmar次に何をすればよいですか? – dPdms

答えて

1

あなたはパターンマッチをやっているときにのみ一般LIKEを使用する必要があり、ところで

SELECT t1.id 
FROM yourTable AS t1 
JOIN yourTable AS t2 ON t1.id = t2.id 
WHERE t1.car IN ('A', 'C') 
AND t2.car = 'B' 

を自己結合を使用することができます。完全一致の場合は、=またはINを使用して複数の項目のいずれかと一致させます。

1

未テストですが、このようなものが動作するはずです:AまたはCを持つすべてのIDのリストにあるようなIDを持つすべての行を取得します。 B.

SELECT t.* 
FROM mytable t 
WHERE t.id IN (
    SELECT DISTINCT id 
    FROM mytable t2 
    WHERE t2.car='A' OR t2.car='C' 
) 
AND t.id IN (
    SELECT DISTINCT id 
    FROM mytable t3 
    WHERE t3.car='B' 
) 
関連する問題