SQL JOIN'USING()'子句可以与一个或多个'AND ON()'子句一起使用以进行单个联接吗?

时间:2018-09-06 14:42:43

标签: sql db2 db2-400

在DB2-400 SQL连接中,USING()子句是否可以与一个或多个AND ON子句一起用于单个连接。这适用于一些字段名称相同但并非全部的情况,因此USING()仅适用于联接的 part

我本可以发誓我以前曾经做过这件事,并且奏效了,但现在却使我望而却步。

我尝试了如下所示的各种组合,但是它们都不起作用。也许我只是误会了,这是不可能的:

SELECT * FROM T1 INNER JOIN T2 USING (COL1,COL2) AND ON (T1.COL3=T2.COL4)

SELECT * FROM T1 INNER JOIN T2 ON (T1.COL3=T2.COL4) AND USING (COL1,COL2)

SELECT * FROM T1 INNER JOIN T2 ON (T1.COL3=T2.COL4), USING (COL1,COL2)

SELECT * FROM T1 INNER JOIN T2 USING (COL1,COL2,(1.COL3=T2.COL4))

2 个答案:

答案 0 :(得分:2)

您可以使用where

SELECT *
FROM T1 INNER JOIN
     T2 USING (COL1, COL2) 
WHERE T1.COL3 = T2.COL4;

另一种选择是使用子查询来重命名其中一个表中的列。

答案 1 :(得分:1)

https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_72/db2/rbafzjoinedt.htm

中检查语法图

我建议JOIN USING的唯一选项是用逗号分隔的列列表

JOIN table-reference USING ( column-name [, column-name] ... )

您不能将USINGON混合使用