[英]Update column enumerating row number in MySQL 5.7
我被困在 MySQL 5.7 中的查詢中。 簡化,我有一個像這樣的臨時表:
guid B C
2 aa 55
5 ab 66
7 ac 77
9 ad 88
我想要做的是,將列 guid 轉換為從 1 開始的枚舉,同時不觸及其他列中的任何數據:
guid B C
1 aa 55
2 ab 66
3 ac 77
4 ad 88
我一直在尋找涉及 ROW_NUMBER 和 ROW_ID 的解決方案,但我的語法將不被接受:
UPDATE temp_table
SET temp_table.guid = temp_table.New_guid
FROM (
SELECT guid, ROW_NUMBER() OVER (ORDER BY [guid]) AS New_guid
FROM temp_table
) x
我試圖從這個問題中采用上述內容,但它一直說“FROM 在這個位置不是有效輸入”。
您可以使用變量:
set @rn = 0;
update temp_table
set guid = (@rn := @rn + 1)
order by guid;
如果您實際上並不關心當前的順序,您可以使用:
update temp_table tt cross join
(select @rn := 0) params
set tt.guid = (@rn := @rn + 1);
不幸的是,當update
有join
時,您不能使用order by
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.