2011-10-18 7 views
1

クエリ1:条件選択ベースと結合する問合せ

SELECT if(COUNT(0),1,0) as 'IsPresent' 
FROM table1 
WHERE Id=1500;  

QUERY2:IsPresentがある

場合は1、その後、

select t2.mark,t2.age from table2 t2,table1 t1 
where t1.ID=t2.ID order by t1.ID; 

IsPresentが、その後、

select mark,age from table2; 
0である場合

すなわち。エントリがテーブルに存在する場合は、他に参加する必要があります。参加する必要はありません。

単一のmysql選択クエリでこれを実現する方法はありますか?

私はあなたが次のようになり組合二つの異なるクエリの例ができると思い
+0

あなたは 'table1'に参加していますがドンその表の列を表示します。それはあなたが欲しいものですか?これは 'table2'から重複したデータを表示するかもしれません。 –

答えて

1

SELECT T2.MARK, T2.AGE 
FROM TABLE1 T1, TABLE2 T2 
WHERE 
    T1.ID=T2.ID AND 
    T1.ID=1500 
UNION 
SELECT MARK, AGE 
FROM TABLE1 
WHERE 
    NOT ID=1500 
+0

お問い合わせいただきありがとうございます。追加の重複行が戻ってきています。私は組合が助けるとは思わない。 – Sharpeye500

+0

テーブル1レコードのID = 1500は唯一の条件ですか?その場合は、SELECTステートメントをネストするのではなく、T1.ID = 1500と2番目のケースでT1.ID = 1500をテストするだけで済みます。 – Terhands

1
SELECT t2.mark, t2.age 
    FROM table2 t2 
     JOIN table1 t1 
     ON t1.id = t2.id 
    WHERE EXISTS 
      (SELECT * 
      FROM table1 
      WHERE id=1500 
     ) 
    UNION ALL 
    SELECT t2.mark, t2.age 
    FROM table2 t2 
    WHERE NOT EXISTS 
      (SELECT * 
      FROM table1 
      WHERE id=1500 
     ) 

に単純化することができる:「

SELECT t2.mark, t2.age 
    FROM table2 t2 
     LEFT JOIN table1 t1 
     ON t1.id = t2.id 
     AND EXISTS 
      (SELECT * 
       FROM table1 
       WHERE id=1500 
      )