Sql Concat上的内连接
我在SQLServer中使用这段代码将两个表连接到使用concat生成的唯一值上 我的意图是在两个表中使用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)
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)
或两者上建立索引。这些列也可以在索引中反转