我需要在不同的行集上使用不同的条件连接两个表。
例如如果RowID < 100 on t1.ColA = t2.ColB
和如果RowID >= 100 on t1.ColA = t2.ColB+1
我实现了如下:
... On (RowID <100 and t1.ColA=t2.ColB) OR (RowID >=100 on t1.ColA=t2.ColB+1) ...
但是它非常非常慢,那么问题是什么以及更好的解决方案是什么?
我需要在不同的行集上使用不同的条件连接两个表。
例如如果RowID < 100 on t1.ColA = t2.ColB
和如果RowID >= 100 on t1.ColA = t2.ColB+1
我实现了如下:
... On (RowID <100 and t1.ColA=t2.ColB) OR (RowID >=100 on t1.ColA=t2.ColB+1) ...
但是它非常非常慢,那么问题是什么以及更好的解决方案是什么?
RowID <100 on t1.ColA=t2.ColB
UNION ALL
If RowID >=100 on t1.ColA=t2.ColB+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
可能会更快