2017-04-18 18 views
2

私は必要な情報を取得するための適切なMySQLクエリを作成する方法を理解しようとしています。ここ は私の表PARAMからのサンプル行です:MySQLの組み合わせ/連結/複数選択クエリ

Serial | Repeater1 | Repeater2 | Repeater3 

私はシリアルフィールドに含まれていないすべてのRepeater1、Repeater2またはRepeater3を取得したいと思います。 これらのフィールドはすべて同じSAME TABLEの下にあります。 EXのために

Serial | Repeater1 | Repeater2 | Repeater3 

1234 | 1111  | 2222  | null 

1235 | 1111  | null  | null 

1236 | 1234  | 1111  | 2222 

私のSELECTクエリだけ返す必要があります:Repeater1で使用される1234として

1111 

2222 

シリアルに存在する(そう回避する必要がある)、さらには1111年または2222場合であります異なる列(この例ではRepeater2とRepeater3)の下に存在します。私は、DISTINCTをRepeater1、Repeater2、またはRepeater3のいずれかにリストしたいだけでした。

このリクエストを達成するための考えはありますか?

多くのヘルプが先行しています。

+0

あなたは、これまで何を試してみましたか?ヒントは、テンポラリテーブルを持つストアドプロシージャを使用します。 – SMA

答えて

0
select * from ( 
    select distinct Repeater1 as repeater from table1 where Repeater1 is not null 
    UNION 
    select distinct Repeater2 as repeater from table1 where Repeater2 is not null 
    UNION 
    select distinct Repeater3 as repeater from table1 where Repeater3 is not null 
) as datarepeater 
where datarepeater.repeater not in (select serial from table1) and datarepeater.repeater!=0 
+0

ありがとうBhawin! – Sush1

0
select r from (
    select Repeater1 as r from t WHERE Repeater1 IS NOT NULL 
    union 
    select Repeater2 as r from t WHERE Repeater2 IS NOT NULL 
    union 
    select Repeater3 as r from t WHERE Repeater3 IS NOT NULL 
) reps 
left join t 
on reps.r = t.Serial 
WHERE t.Serial IS NULL 
+0

お手伝いもありがとうございます! – Sush1

+0

ようこそ。 –

関連する問題