J'ai une table (MYSQL) au format suivant ; en supposant que le nom de la table est mytable
:
id | Nom | Groupe |
---|---|---|
123 | Nom 1 | 1 |
124 | Nom 2 | 2 |
125 | Nom 3 | 1 |
126 | Nom 4 |
id
是唯一的并且自动递增。 name
是一个唯一的字符串,group
n'est qu'un entier
Je veux name4
分配给一个尚不存在的新 group
,因此本例中 name4
的 group
不能是 1
或 2
maintenant.
Par exemple, le résultat pourrait être :
id | Nom | Groupe |
---|---|---|
126 | Nom 4 | 3 |
Actuellement, j'appuie sur group
降序排序,只需手动插入最大数字 + 1,但我想知道是否有更好/更快的方法在列中生成新的唯一值。 group
qui n'a d'autre contrainte que d'être un nombre entier.
J'utilise MySQL Workbench, je peux donc utiliser les commandes SQL ainsi que les options spécifiques à Workbench si disponibles.
Si quelque chose n'est pas clair, je serai heureux de vous apporter des éclaircissements.
Dans MySQL 8.0, vous pouvez obtenir de l'aide sur deux fonctions de fenêtre :
MAX
, récupérez la valeur maximale "groupe"ROW_NUMBER
, récupère la valeur incrémentielle pour chaque NULL présent dans le tableau.Vous pouvez ensuite additionner ces deux valeurs et mettre à jour le tableau avec le champ "Groupe" vide.
Découvrez la démo ici.
Dans MySQL 5.
. Découvrez la démoUPDATE
语句中增量更新。 >SETici