2016-06-30 7 views
0

このようなアプローチはありますか? :どこで(サブクエリ)を選択します

SELECT * FROM table1 
INNER JOIN table2 
    ON table1.field = table2.field 
WHERE field2 IN (SELECT * FROM table3 WHERE field LIKE '%pattern%') 

IN(内部、より正確に)私は私は()内の範囲をFIELD2たメインクエリから行を得ることができるので%パターンの%と一致する表3の行からの値を必要としますテーブル3の値。

答えて

0

SELECT field2 FROM table3 WHERE field LIKE '%pattern%' 
0

はあなたが行うことができますようにあなたが唯一の必要なフィールドを選択する必要がありますが、列の数と種類が

SELECT * FROM table1 
INNER JOIN table2 
ON table1.field = table2.field 
WHERE field2 IN (SELECT field3 FROM table3 WHERE field LIKE '%pattern%') 

または例えば一致している必要があります:(

SELECT * FROM table1 
INNER JOIN table2 
ON table1.field = table2.field 
WHERE (field2_1, field2_2) fi IN (SELECT field3_1, field3_2 
           FROM table3 
           WHERE field LIKE '%pattern%') 

field2_1、field2_2)、field3_1、field3_2はnumberと型が一致する必要があります

0

代わりにサブクエリを、あなたが直接、表3のためにJOINを使用することができます。

SELECT * 
FROM table1 T1 
INNER JOIN table2 T2 ON T2.field = T1.field 
INNER JOIN table3 T3 ON T3.field = T1.field2 
WHERE T3.field LIKE '%pattern%' 

ここでT1、T2、T3は読みやすく

ため table aliasです
関連する問題