SQL JOIN USING和WHERE

时间:2016-06-24 16:21:32

标签: sql join ansi

这有点像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子句的一部分?

1 个答案:

答案 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}},您需要一个子查询来保持JOINWHERE

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。