Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL能否加入';使用();子句与一个或多个'一起使用;在()和#x27;单个联接的子句。。?_Sql_Db2_Db2 400 - Fatal编程技术网

SQL能否加入';使用();子句与一个或多个'一起使用;在()和#x27;单个联接的子句。。?

SQL能否加入';使用();子句与一个或多个'一起使用;在()和#x27;单个联接的子句。。?,sql,db2,db2-400,Sql,Db2,Db2 400,在DB2-400 SQL联接中,USING()子句能否与单个联接的一个或多个AND ON子句一起使用。。?这适用于某些字段名相同但并非全部的情况,因此使用()只能应用于连接的一部分 我本可以发誓我以前做过这件事,但现在我逃避了 我尝试了如下所示的各种组合,但都不起作用。也许我只是弄错了,这是不可能的: SELECT * FROM T1 INNER JOIN T2 USING (COL1,COL2) AND ON (T1.COL3=T2.COL4) SELECT * FROM T1 INNER

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

我本可以发誓我以前做过这件事,但现在我逃避了

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

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

在这里检查语法图

我建议使用
连接的唯一选项是列的逗号分隔列表

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

您不能将
混合使用
打开

检查此处的语法图

我建议使用
连接的唯一选项是列的逗号分隔列表

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

您不能将
使用
上的
混合使用
,您可以在以下位置使用

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

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

您可以使用
where

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

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

我认为(t1.col1,t1.col2)=(t2.col1,t2.col2)和t1.col3=t2.col4
上的
可能是编写它的最短方法,但我不知道DB2是否支持这种方法。奇怪的语法。。。为了继续使用(),我将其他内部连接条件放在WHERE子句中。(但我宁愿切换到常规语法。)是的,我在连接到DB2的DBeaver(一个类似DBSquirrel的客户机)中工作,但我一直无法让它工作,继续使用
SQL0199
。这是一个复杂的查询,有三个物理表,两个“unpivot”作为连接的
UNION
子查询,每个子查询有六个子选择。而
上的一个
子句是介于
之间的一个
,因此连接会拉入一系列记录,而不是一个完美的a=B,lol。如果可能的话,只是尝试让这个混乱更具可读性。我已经清理了很多,但它仍然需要工作。我认为(t1.col1,t1.col2)=(t2.col1,t2.col2)和t1.col3=t2.col4
可能是编写它的最短方法,但我不知道DB2是否支持这一点。奇怪的语法。。。为了继续使用(),我将其他内部连接条件放在WHERE子句中。(但我宁愿切换到常规语法。)是的,我在连接到DB2的DBeaver(一个类似DBSquirrel的客户机)中工作,但我一直无法让它工作,继续使用
SQL0199
。这是一个复杂的查询,有三个物理表,两个“unpivot”作为连接的
UNION
子查询,每个子查询有六个子选择。而
上的一个
子句是介于
之间的一个
,因此连接会拉入一系列记录,而不是一个完美的a=B,lol。如果可能的话,只是尝试让这个混乱更具可读性。我已经把它清理了很多,但它仍然需要工作。是的,看起来这就是答案。正如我在我的专栏文章中提到的,我认为我以前做过这件事,它成功了,但似乎我错了,它不起作用。@spinjector供您参考,在IBM的Db2中,您也不能从tbl1使用(colA)连接tbl2使用(colA)连接tbl3使用(colA)
,我不确定我是否理解这一点。你的意思是,在from
之后不能有多个
内部联接
子句,或者不能有两个
子句使用不同联接的相同列名..?是的,看起来这就是答案。正如我在我的专栏文章中提到的,我认为我以前做过这件事,它成功了,但似乎我错了,它不起作用。@spinjector供您参考,在IBM的Db2中,您也不能从tbl1使用(colA)连接tbl2使用(colA)连接tbl3使用(colA)
,我不确定我是否理解这一点。您的意思是,在from
之后不能有多个
内部联接
子句,或者不能有两个
子句使用不同联接的相同列名。。?