0
我面臨着SSMS 2012今天中午一個奇怪的問題,因爲我有如下表:更新表設置爲從工作不按預期
Serial_num Item_NBR SeqNo Parent_SeqNo Depth Parent_Item_NBR
AAA 123221 1 NULL 1
AAA 112333 2 1 2
AAA 223345 3 2 2
AAA 122322 4 3 3
而且我運行下面的查詢與parent_item_NBR更新表:
UPDATE tbl SET PARENT_ITEM_NBR = ( SELECT top 1 a.ITEM_NUM
FROM tbl b where
a.SERIAL_NUM = b.SERIAL_NUM and a.SEQNO=b.PARENT_SEQNO and a.DEPTH=b.DEPTH-1
) FROM tbl a
但它給我下面的結果:
Serial_num Item_NBR SeqNo Parent_SeqNo Depth Parent_Item_NBR
AAA 123221 1 NULL 1 123221
AAA 112333 2 1 2 112333
AAA 223345 3 2 2 223345
AAA 122322 4 3 3 NULL
相反,我需要
Serial_num Item_NBR SeqNo Parent_SeqNo Depth Parent_Item_NBR
AAA 123221 1 NULL 1 123221
AAA 112333 2 1 2 123221
AAA 223345 3 2 2 112333
AAA 122322 4 3 3 223345
請建議是否有任何解決方法利用自連接來更新表。 謝謝。
您的更新查詢對我而言並不是很清楚您要做什麼。當然,你今天看到的結果甚至不能保證在未來工作(你有最高的1但沒有排序)。當然,如果您的數據不允許多個深度值,那麼頂端1可能是基於連接的冗餘。你能整理一些東西來幫助澄清你的問題嗎? sqlfiddle.com將是一個很好的開始。 – 2014-11-24 20:15:36
嘗試將「UPDATE tbl」更改爲「UPDATE a」(換句話說,更新別名) – 2014-11-24 20:19:14
@SeanLange我正在搞兩級嵌套獲取parent_Item_nbr,只需要級別嵌套。請看雷達的答案。那工作! – tom 2014-11-24 21:32:08