我有表叫用戶和例如它看起來像:MySQL的循環的每一行,並更新
Name ID
Tom 1
Al 55
Kate 22
...
的問題是:ID是不按順序排列。
我想給他們新的ID從1到用戶的長度。我想聲明一些var = 1並在循環中進行更新,並給它們新的ID = var,然後做var = var + 1直到var < =用戶長度
我該怎麼做?
非常感謝!
我有表叫用戶和例如它看起來像:MySQL的循環的每一行,並更新
Name ID
Tom 1
Al 55
Kate 22
...
的問題是:ID是不按順序排列。
我想給他們新的ID從1到用戶的長度。我想聲明一些var = 1並在循環中進行更新,並給它們新的ID = var,然後做var = var + 1直到var < =用戶長度
我該怎麼做?
非常感謝!
這裏是你會怎麼做,在MySQL的。只要運行這個:如果在用戶表中的ID並非由FK其他表引用
set @newid=0;
update users set ID = (@newid:[email protected]+1) order by ID;
爲版本 「一個查詢」 的:'更新用戶設置ID =(@newid:= @ NEWID + 1),其中0 =(選擇@newid:= 0)以便通過ID;' – Mike
,下面的查詢可以在表中更新的ID有新的連續值:
CREATE TABLE IF NOT EXISTS tmpUsers (
ID int not null,
newID int not null auto_increment primary key
) engine = mysisam;
INSERT INTO tmpUsers (ID,newID)
SELECT ID,NULL
FROM users
ORDER BY ID;
UPDATE users u INNER JOIN tmpUsers t
ON u.ID=t.ID
SET u.ID=t.NewID;
DROP TABLE IF EXISTS tmpUsers;
測試腳本:
CREATE TABLE users (ID int not null, name nvarchar(128) not null);
INSERT users(ID,name)
VALUES (1,'aaa'),(4,'bbb'),(7,'ggg'),(17,'ddd');
SELECT * FROM users;
爲什麼你認爲這是一個'問題'?提示:這不是 – Strawberry
當然它不是,但我需要改變它,因爲我需要它做不同的東西。我改變了幾年前構建的Web應用程序,DB和PHP代碼真的寫錯了。我沒有時間從頭開始重寫所有內容。 – Ridd