我如何从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等。
答案 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