我有一個具有列名稱ID(主鍵)的表。更新從最後一行開始的SQL中的列值
在這個我從1到152
值現在我想更新表,以便編號從109到152的1
遞增,當我運行該SQL
update category set id=(id+1) where id<152 and id>108
它給出錯誤,因爲當它將ID = 109更新爲110時,它在下一行發現110的重複。
所以我該怎麼做。
我就可以開始從最後一排是152更新和制止對108
我有一個具有列名稱ID(主鍵)的表。更新從最後一行開始的SQL中的列值
在這個我從1到152
值現在我想更新表,以便編號從109到152的1
遞增,當我運行該SQL
update category set id=(id+1) where id<152 and id>108
它給出錯誤,因爲當它將ID = 109更新爲110時,它在下一行發現110的重複。
所以我該怎麼做。
我就可以開始從最後一排是152更新和制止對108
我猜你正在使用MySQL。如果是這樣,您可以使用order by
來做到這一點。
update category
set id = id + 1
where id > 108 and id < 152
order by id desc;
假設id
s爲正,下面應該在任何數據庫工作(假設列不宣佈 「無符號」):
update category
set id = -(id + 1)
where id > 108 and id < 152;
update category
set id = -id
where id < 0;
,這對我很好。謝謝。 – 2014-10-11 06:27:50
@SunilKumar - 僅供參考,SQL服務器根據需要執行原始查詢。 – 2014-10-11 06:38:40
做它在兩個步驟。首先添加10,000(或任何其他未使用的範圍),然後減去9999.不要忘記在第二步中調整標準。
也是一個好主意。它也會正常工作。謝謝 – 2014-10-11 06:36:31
你使用SQL Server或MySQL? – 2014-10-11 06:21:27
如果在更新之前,表中的表格中的'109'和'152'之間已經存在值,並且'id'是主鍵,則無法執行更新,除非在更新前刪除可能的重複值。除此之外,下定決心和/或告訴我們您使用的是哪種RDBMS – Barranka 2014-10-11 06:23:39