SQL JOIN 'USING()' 子句可以与一个或多个 'AND ON()' 子句一起用于单个连接吗?

Can the SQL JOIN 'USING()' clause be used with one or more 'AND ON()' clauses for a single join..?

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

我可以发誓我以前做过这个并且它有效,但现在它让我望而却步。

我尝试了如下所示的各种组合,但其中 none 行得通。也许我只是误会了,这是不可能的:

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))

在这里检查语法图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

混用

您可以使用 where:

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

另一种方法是使用子查询重命名其中一个表中的列。