我有一個表,它有一個唯一的ID列,這是一個int。這並不一定包含所有最多的數字,有些會被遺漏(這不是一個身份列 - 不受我控制)。SQL ROW_NUMBER添加到變量
我需要從該表中選擇一些現有的行,並將它們添加到最後更改一列的數據,每行都有一個新ID,從MAX ID遞增。事情是這樣的:
declare @maxID int;
set @maxID = (select MAX("ID") from "table");
insert into "table"
select @maxID + ROW_NUMBER, 'newData', "col3", "col4"
from "table" where "col2" = 'oldData';
不過,我不知道在哪裏把它從這裏 - 在ROW_NUMBER需要使用OVER聲明,老實說,我在這方面不明白。
任何幫助?
太好了,謝謝。您能否詳細說明爲什麼需要OVER語句,而不是簡單地枚舉SELECT結果? – Dan
那麼'ROW_NUMBER'語法需要'OVER'關鍵字。它不可能比這更簡單。 'ORDER BY'是必需的,因爲'ROW_NUMBER'不知道枚舉順序。 –
數據庫中的行在邏輯上沒有「自然」順序(儘管我們人類傾向於將自然順序看作與聚集索引順序相同),因此ROW_NUMBER需要了解您想查看的順序記錄。 – Rikalous