这有点像SQL JOIN where to place the WHERE condition?
我更喜欢在连接上使用USING子句,但是还不能将字段值条件与连接一起使用。
SELECT 1
FROM table1 t1
JOIN table2 t2 USING(id) AND t2.field = 0;
ORA-00933: SQL command not properly ended
是否可以将USING和另一个条件作为JOIN子句的一部分?
答案 0 :(得分:0)
您可以使用:
SELECT 1
FROM table1 t1
JOIN table2 t2 USING(id)
WHERE t2.field = 0;
使用USING(id)
就像使用ON t1.id = t2.id
一样,只有JOIN
结果而不是t1.id
& t2.id
只有一个id
列。
对于条件后跟INNER JOIN USING
OUTER
的{{1}},您需要一个子查询来保持JOIN
与WHERE
:
USING
对于有条件的SELECT ...
FROM (SELECT id, ...
FROM table1 t1
JOIN table2 t2 USING(id)
WHERE t2.field = 0) s
LEFT JOIN ...;
OUTER
,您需要一个子选择:
JOIN USING
使用SELECT ...
FROM table1 t1
LEFT JOIN (SELECT *
FROM table2 t2
WHERE t2.field = 0) t2
USING (id);
查看this re ON
/ WHERE
。混合JOIN
&时,请参阅this re ON
/ WHERE
INNER
OUTER
s。