2016-04-12 54 views
-1

サブクエリが1つの行を返すときに動作する次のクエリがあります。ただし、サブクエリは複数の行を返すことがあります。このクエリを操作して、サブクエリで複数の行が返されるようにすることは可能ですか?Subクエリが複数の行を返す場合のWhere句のサブクエリ

ここでは、結合を使用するのが最善の方法であることを認識していますが、この継承されたDB構造ではオプションではありません。

SELECT * FROM dev.products 
WHERE prodid = (SELECT prodid from dev.kit_products where kitid = 2); 
+2

'= 'の代わりに' IN'演算子を使用できます。 – Wanderer

+0

実際に使用しているデータベースで質問にタグを付ける必要があります(ただし、この場合は違いはありません)。 –

+0

MySQLまたはMS SQL Server?関与していない製品にはタグを付けないでください。 – jarlh

答えて

3

INを使用すると、あなたの最善の

SELECT * FROM dev.products 
WHERE prodid IN (SELECT prodid from dev.kit_products where kitid = 2); 
1

使用WHERE IN次のようになります。代わりにあなたがIN演算子を使用することができます=

SELECT * FROM dev.products 
WHERE prodid IN (SELECT prodid from dev.kit_products where kitid = 2); 
1

クエリ

SELECT * FROM dev.products 
WHERE prodid IN (
    SELECT prodid from dev.kit_products where kitid = 2 
); 
0

はIN演算子を使用すると、WHERE句で複数の値を指定することができます。

SELECT * FROM dev.products 
WHERE prodid IN (SELECT prodid from dev.kit_products where kitid = 2); 
関連する問題