遇到一個需求,項目是我接手二次開發的,之前的大神設計資料庫,訂單表中沒有訂單號,現在讓我加上這個號,規則是訂單創建日期加上自增的ID,ID需要補足5位,例:00002,00124,01245這樣。這個並不難。在a表中更新我加上的訂單號: 這樣a表中的數據都能對應的起來了,也不用手工改了。接下來是要把 ...
遇到一個需求,項目是我接手二次開發的,之前的大神設計資料庫,訂單表中沒有訂單號,現在讓我加上這個號,規則是訂單創建日期加上自增的ID,ID需要補足5位,例:00002,00124,01245這樣。這個並不難。在a表中更新我加上的訂單號:
UPDATE dbo.a SET orderNo = CONVERT(VARCHAR(100), CreateDate, 112) + RIGHT(REPLICATE('0', 5) + LTRIM(Id), 5)
這樣a表中的數據都能對應的起來了,也不用手工改了。接下來是要把a表中的訂單號更新到b表中去,a和b用a的Id關聯的。開始糾結了下,最後嘗試著寫出如下代碼,很巧妙的解決了問題:
UPDATE dbo.b SET OrderNo = ( SELECT DISTINCT CONVERT(VARCHAR(100), a.CreateDate, 112) + RIGHT(REPLICATE('0', 5) + LTRIM(Id), 5) FROM dbo.b WHERE b.Id= dbo.a.Id--這個地方需要註意下因為之前設計的列名完全一樣,所以需要加上各自的表名,如果不一樣的話,就可以不加的。 )