在不同的行集上加入具有不同条件的语句

时间:2013-08-21 08:21:27

标签: sql sql-server tsql join

我需要在不同的行集上使用不同的条件连接两个表。

例如,RowID < 100 on t1.ColA = t2.ColBRowID >= 100 on t1.ColA = t2.ColB+1

我实现了如下:

... On (RowID <100 and t1.ColA=t2.ColB) OR (RowID >=100 on t1.ColA=t2.ColB+1) ...

但它非常慢,所以问题是什么,什么是更好的解决方案?

2 个答案:

答案 0 :(得分:4)

RowID <100 on t1.ColA=t2.ColB 

UNION ALL

If RowID >=100 on t1.ColA=t2.ColB+1

尝试此解决方案。

答案 1 :(得分:1)

你可以试试这个:

On t1.ColA=CASE
WHEN RowID<100 THEN t2.ColB
WHEN RowID>=100 THEN t2.ColB+1
END

SELECT
...
CASE
    WHEN RowID<100 THEN t2.Column
    WHEN RowID>=100 THEN t3.Column
END
...
Join t2 On t1.ColA=t2.ColB
Join t2 as t3 On t1.ColA=t3.ColB+1

可能会更快