2016-05-09 16 views
-1

私は質問が残っていて、何か助けが必要です。2つの条件のあるテーブルから選択してください

私は例えば、他のテーブルからの二つの条件を満たしているテーブルから値を選択する必要があります。

Select * from table1 
where ID = (select ID from table2) 
AND value = (select value from table2) 

だから、私はテーブルから一つの値だけを必要とするだろうと、私はクエリを実行できます。

Select * from table1 where ID = (id1) AND value = (value1) 

私が知っている唯一の解決策はINを使用することですが、要求された解決策ではありません。

私はこれに似たものが必要ですが、table2によって返されるデータは1行だけではなく、複数であることを数えます。

誰かが私にこれを見つける方法のいくつかの手がかりを与えることができますか?

ありがとうございました。

+0

不要なデータベースタグを削除しました。実際に使用しているデータベースのタグを追加してください。 –

+0

はIDで、table1の値はtable2の外部キーですか? – Sachin

答えて

1

一つの方法は、existsを使用しています。

Select * 
from table1 t1 
where exists (select 1 
       from table2 t2 
       where t2.id = t1.id and t2.value = t1.value 
      ); 

これはANSI標準構文であるので、それは任意のデータベースで動作するはずです。一部のデータベースでは、この構文をサポートしています。

select t1.* 
from table1 t1 
where (t1.id, t1.value) in (select t2.id, t2.value from table2 t2); 
1

私はANDOR

select * 
from table1 
where (ID = (id1) AND value = (value1)) 
OR (ID = (id2) AND value = (value2)) 

各チェックを括弧内に追加する必要があります使用します。これにより、IDとVALUEのペアに一致するすべての結果が返されます。

1
Select * from 
table1 inner join table2 on 
(table1.ID = table2.ID and 
table1.value = table2.value) ; 

限り私が理解できるように、あなただけのtable1IDvaluetable2IDvalueに等しいtable1からすべての行を選択する必要があるため。だからtable1table2の条件を確認するだけでinner joinが必要です。

関連する問題