この人頭いいなと思ったエピソード

MySQL 5にて以下のテーブルがあると仮定します。

-----
|A|B|
-----
|1|1|
|1|2|
|1|4|
|2|1|
|2|2|
|3|2|
|3|4|
|4|1|
|4|3|
|4|5|
-----

ここで、Aが特定の番号の時、B値のいずれかを持つ列のA値を取得したいと考えています(たとえばA=4のとき、[1,3,5]のいずれかが含まれているA=[1,2]が返ります)。これを実装するにはどのようなクエリを記述すればいいでしょうか。

A 回答 (1件)

SELECT DISTINCT A FROM テーブル


WHERE B IN(SELECT B FROM テーブル WHERE A=4)
AND A!=4
または
SELECT DISTINCT T1.A FROM テーブル T1
INNER JOIN テーブル T2 ON T1.B=T2.B AND T2.A=4
WHERE T1.A!=4
または
SELECT DISTINCT T1.A FROM テーブル T1
WHERE EXISTS(SELECT ' ' FROM テーブル T2
WHERE T1.B=T2.B AND T2.A=4)
AND T1.A!=4
です。
    • good
    • 0
この回答へのお礼

うまいこといきそうです。ご回答ありがとうございました。

お礼日時:2012/04/04 17:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


おすすめ情報