有一个包含数百个条目和六列的表格。其中一个列“事务”列已填充空值,我们现在需要该列具有唯一值,现有条目是唯一的。
有一个'time'日期时间列,理想情况下,'transaction'列将以'时间'顺序从1开始逐步更新。
这看起来很简单,但经过多次删除和恢复实时数据库后,它现在看起来不那么简单了,我们将非常感激一点帮助。
SQL Fiddle - Sample of live database
最终解决方案非常感谢Juan Carlos Oropeza提供解决方案并对我保持耐心。
UPDATE `my_table` t1
INNER JOIN (SELECT t.*,
@rownum := @rownum + 1 AS `rank`
FROM `my_table` t,
(SELECT @rownum := 0) r
ORDER BY time
) t2
ON t1.`id` = t2.`id`
SET t1.`transaction` = t2.`rank` where t1.`transaction` is null
答案 0 :(得分:2)
<强> SQL Fiddle Demo 强>
UPDATE Table1 t1
INNER JOIN (SELECT t.*,
@rownum := @rownum + 1 AS `rank`
FROM Table1 t,
(SELECT @rownum := 0) r
// ORDER BY time use your datetime field
) t2
ON t1.`ID` = t2.`ID` // You need a PK field
SET t1.`value` = t2.`rank` // Update your sequence field
<强>模式强>
CREATE TABLE Table1
(`ID` int, `value` int)
;
INSERT INTO Table1
(`ID`, `value`)
VALUES
(10, NULL),
(20, NULL),
(30, NULL)
;
<强>输出强>
| ID | value |
|----|-------|
| 10 | 1 |
| 20 | 2 |
| 30 | 3 |
编辑:
或者只是创建一个新的ID字段为PK
alter table `wp_user_txs` add column `id` int(10) unsigned primary KEY AUTO_INCREMENT;