Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.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 Concat上的内连接_Sql_Sql Server - Fatal编程技术网

Sql Concat上的内连接

Sql Concat上的内连接,sql,sql-server,Sql,Sql Server,我在SQLServer中使用这段代码将两个表连接到使用concat生成的唯一值上 我的意图是在两个表中使用concat函数创建唯一的值,这样我就可以在匹配的值上连接它们 问题是以这种方式编写的查询永远不会执行(就像某种无限循环) [表格输入和结果] select t1.AAA, t1.BBB, t1.XXX, t2.YYY from Table1 t1 inner join Table2 t2 on concat(t1.AAA, t1.BBB)= CONCAT(t2.AAA, t2.BBB)

我在SQLServer中使用这段代码将两个表连接到使用concat生成的唯一值上

我的意图是在两个表中使用concat函数创建唯一的值,这样我就可以在匹配的值上连接它们

问题是以这种方式编写的查询永远不会执行(就像某种无限循环)

[表格输入和结果]

select t1.AAA, t1.BBB, t1.XXX, t2.YYY
from Table1 t1
inner join Table2 t2
on concat(t1.AAA, t1.BBB)= CONCAT(t2.AAA, t2.BBB)

为什么是concat,这样您就失去了优化器和索引的好处

您可以在两个条件下加入:

select select t1.AAA, t1.BBB, t1.XXX, t2.YYY
from Table1 t1
inner join Table2 t2
on t1.AAA= t2.AAA
and t1.BBB = t2.BBB

为什么是concat,这样您就失去了优化器和索引的好处

您可以在两个条件下加入:

select select t1.AAA, t1.BBB, t1.XXX, t2.YYY
from Table1 t1
inner join Table2 t2
on t1.AAA= t2.AAA
and t1.BBB = t2.BBB

您需要的查询是:

select t1.AAA, t1.BBB, t1.XXX, t2.YYY
from Table1 t1 inner join
     Table2 t2
     on t1.AAA = t2.AAA and t1.BBB = t2.BBB;

然后,如果性能是一个问题,您需要在
表1(AAA,BBB)
表2(AAA,BBB)
或两者上建立索引。这些列也可以在索引中反转。

您需要的查询是:

select t1.AAA, t1.BBB, t1.XXX, t2.YYY
from Table1 t1 inner join
     Table2 t2
     on t1.AAA = t2.AAA and t1.BBB = t2.BBB;
然后,如果性能是一个问题,您需要在
表1(AAA,BBB)
表2(AAA,BBB)
或两者上建立索引。这些列也可以在索引中反转