我有以下记录集(is_unique 为空):
+-----+----------+-------------+
| id | is_unique| val |
+-----+----------+-------------+
| 1 | 1 | 100100 |
| 2 | 1 | 222111 |
| 3 | 0 | 100100 |
| 4 | 0 | 222111 |
| 5 | 1 | 311111 |
+-----+----------+-------------+
如何为 val 中值的每个第一次出现(关于 id)设置 is_unique = true?
最佳答案
使用用户变量:-
SET @prev:=0;
UPDATE someTable
SET is_unique=IF(@prev=val, 0, IF(@prev:=val, 1, 0 ))
ORDER BY val, id;
这将用户变量设置为 0(我假设 val 是一个整数字段)。然后进行更新,按 val 和 id 排序。如果@prev与val相同,则将is_unique设置为0,否则将其设置为检查val的当前值分配给@prev的结果。
SQL fiddle :-
关于MySQL 在另一个字段中第一次出现某个值时设置标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24535916/