Dans MySQL, la fonctionnalité rowid fournie par Oracle n'est pas directement disponible. Cependant, il existe des approches alternatives pour obtenir des fonctionnalités similaires pour les tâches de manipulation de données.
Pour supprimer les valeurs en double et imposer une clé primaire comme dans le cas Rowid d'Oracle, vous pouvez suivez ces étapes :
Utiliser une session Variable :
SELECT @rowid:=@rowid+1 as rowid FROM table1, (SELECT @rowid:=0) as init ORDER BY sorter_field
Cela génère un identifiant unique de type rowid pour chaque ligne.
Créer une table temporaire :
CREATE TEMPORARY TABLE duplicates ...
Insérer une sous-requête de plage dans un fichier temporaire Tableau :
INSERT INTO duplicates (rowid, field1, field2, some_row_uid) SELECT @rowid:=IF(@f1=field1 AND @f2=field2, @rowid+1, 0) as rowid, @f1:=field1 as field1, @f2:=field2 as field2, some_row_uid FROM testruns t, (SELECT @rowid:=NULL, @f1:=NULL, @f2:=NULL) as init ORDER BY field1, field2 DESC;
Supprimer les doublons :
DELETE FROM my_table USING my_table JOIN duplicates ON my_table.some_row_uid = duplicates.some_row_uid AND duplicates.rowid > 0
Cette approche fournit une solution de contournement pour l'absence d'équivalent rowid direct dans MySQL, vous permettant d'effectuer des tâches de manipulation de données sur des tables sans clés primaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!