我正在嘗試向幾個 MySQL (MariaDB) 表添加一個新列。我想讓列自動填充序列號。到目前為止我想出的是:
SELECT @count:=0;
UPDATE users SET ordering = @count:=@count 1;
它完美地作業。但是,我不知道如何使分配數字的順序基于另一個 value,即另一個名為 的整數欄位的升序regdate。這是一個例子。
當前結果:
| 登錄 | 注冊日期 | 訂購 |
|---|---|---|
| 用戶 | 1633205589 | 1 |
| 家伙 | 16332060000 | 3 |
| 帳戶 | 16332090000 | 2 |
| 資料 | 16332095000 | 4 |
我想要的是:
| 登錄 | 注冊日期 | 訂購 |
|---|---|---|
| 用戶 | 1633205589 | 1 |
| 家伙 | 16332060000 | 2 |
| 帳戶 | 16332090000 | 3 |
| 資料 | 16332095000 | 4 |
我希望它非常清晰簡潔:)
uj5u.com熱心網友回復:
只要你的更新只涉及一個表,你就可以指定一個順序:
UPDATE users SET ordering = @count:=@count 1 ORDER BY regdate;
uj5u.com熱心網友回復:
您可以使用帶有 ROW_NUMBER 的連接表
CREATE TABLE users ( `login` VARCHAR(7), `regdate` VARCHAR(20) , `ordering` INTEGER );
INSERT INTO users (`login`, `regdate`, `ordering`) VALUES ('user', '1633205589', '1'), ('guy', '16332060000', '3'), ('account', '16332090000', '2'), ('data', '16332095000', '4');
UPDATE users u1 JOIN (SELECT `login`, `regdate`, row_number() over (ORDER BY regdate ASC) rn FROM users) u2 ON u1.`login` = u2.`login` AND u1.`regdate` = u2.`regdate` SET u1.ordering = u2.rn ;
SELECT * FROM users登錄 | 注冊 | 訂購 :------ | :---------- | -------: 用戶 | 1633205589 | 1 家伙 | 16332060000 | 2 帳戶 | 16332090000 | 3 資料| 16332095000 | 4
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/380406.html
