2016-06-24 14 views
0

これはややSQL JOIN where to place the WHERE condition?SQLを使用して結合し、WHERE

にfollowonの私が参加するのUSING句を使用することを好むだろうが、まだ参加して、フィールド値の条件を置くことはできませんよさ。

SELECT 1 
    FROM table1 t1 
    JOIN table2 t2 USING(id) AND t2.field = 0; 

ORA-00933: SQL command not properly ended 

USINGと別の条件をJOIN句の一部として使用できますか?

+3

不可能です。 –

+0

あなたがリンクした回答は貧弱です。私のコメントを参照してください。 – philipxy

答えて

0

あなたが使用することができます。

SELECT 1 
FROM table1 t1 
JOIN table2 t2 USING(id) 
WHERE t2.field = 0; 

USING(id)を使用すると、JOIN結果でそれ以外ON t1.id = t2.idを使用しての代わりに、2列t1.id & t2.id一つだけid列があるようなものです。あなたはUSINGWHEREを維持するためにサブクエリを必要OUTERJOINが続く状況にINNER JOIN USINGについては

SELECT ... 
FROM table1 t1 
LEFT JOIN (SELECT * 
    FROM table2 t2 
    WHERE t2.field = 0) t2 
USING (id); 

SELECT ... 
FROM (SELECT id, ... 
    FROM table1 t1 
    JOIN table2 t2 USING(id) 
    WHERE t2.field = 0) s 
LEFT JOIN ...; 

を条件とOUTERJOIN USINGのためには、副選択を必要とします

thisを参照してください。ON/WHEREJOIN 。混合時にthisre ON/WHEREを参照INNER & OUTERJOINsを参照してください。

関連する問題