給定以下示例表架構和資料:
create table Example(
Id int not null,
Col1 int not null,
Col2 uniqueidentifier null,
);
insert into Example
values
(1, 1, NULL), (2, 1, NULL), (3, 1, NULL), (4, 2, NULL), (5, 3, NULL), (6, 3, NULL)
生成:
| ID | Col1 | Col2 |
|---|---|---|
| 1 | 1 | 空值 |
| 2 | 1 | 空值 |
| 3 | 1 | 空值 |
| 4 | 2 | 空值 |
| 5 | 3 | 空值 |
| 6 | 3 | 空值 |
如果可能的話,我希望幫助撰寫一個腳本,該腳本將newid()根據 Col1 的相同值更新所有具有相同行的 Col2。
腳本執行后 que 表的 Ex:
| ID | Col1 | Col2 |
|---|---|---|
| 1 | 1 | bad34c74-f546-4d79-804b-d048d8c7d977 |
| 2 | 1 | bad34c74-f546-4d79-804b-d048d8c7d977 |
| 3 | 1 | bad34c74-f546-4d79-804b-d048d8c7d977 |
| 4 | 2 | e464b79a-b97c-4192-a4f3-327cc147cc4a |
| 5 | 3 | 99475e8f-2788-4c63-817f-4deb130440ab |
| 6 | 3 | 99475e8f-2788-4c63-817f-4deb130440ab |
非常感謝任何幫助
uj5u.com熱心網友回復:
一種方法是分兩步完成。
UPDATE Example
SET Col2 = NEWID()
UPDATE e1
SET Col2 = e2.Col2
FROM Example e1
CROSS APPLY (SELECT TOP 1 *
FROM Example
WHERE Col1 = e1.Col1
ORDER BY Col2) e2
uj5u.com熱心網友回復:
這也可以通過公用表運算式來完成。UNION是必需的,以便實作子查詢。
WITH cte AS
(
SELECT Col1, NEWID() AS UniqueID
FROM Example
GROUP BY Col1
UNION
SELECT NULL, NEWID()
)
UPDATE e
SET Col2 = cte.UniqueID
FROM Example e
INNER JOIN cte ON cte.Col1 = e.Col1
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/412679.html
標籤:
上一篇:獲取總行數
下一篇:圖片提供者:AssetImage(bundle:null,name:"/assets/google-logo.png")
