在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))
答案 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] ... )
您不能将USING
与ON
混合使用