从2个旧数据表更新新的Table SortOrder

时间:2015-12-11 16:18:26

标签: sql sql-server

我如何从dt1.SortOrder和dt2.SortOrder更新ut.SortOrder?

SELECT TOP 10000 * FROM dbo.UpdateTable ut
LEFT OUTER JOIN dbo.DataTable1 dt1
ON (dt1.PrimeID = ut.PrimeID AND dt1.SecondID = ut.SecondID)
LEFT OUTER JOIN dbo.DataTable2 dt2
ON (dt2.PrimeID = ut.PrimeID AND dt2.SecondID = ut.SecondID)
WHERE ut.PrimeID = 8746

我们基本上合并了2个表,因此两个数据表中都有排序顺序。但是一次只能匹配1个数据表。

DataTable1内容的排序顺序为1和3,而DataTable2的排序顺序为2和4等。

1 个答案:

答案 0 :(得分:1)

我相信这是你正在寻找的。它使用coalesce来确定第一个非空sortorder。如果找不到,它会将排序顺序设置回自身。

UPDATE ut
SET ut.SortOrder = COALESCE(dt1.sortorder, dt2.sortorder, ut.SortOrder)
FROM updatetable ut
  LEFT OUTER JOIN dbo.DataTable1 dt1
    ON (dt1.PrimeID = ut.PrimeID AND dt1.SecondID = ut.SecondID)
  LEFT OUTER JOIN dbo.DataTable2 dt2
    ON (dt2.PrimeID = ut.PrimeID AND dt2.SecondID = ut.SecondID)
WHERE ut.PrimeID = 8746