Maison > base de données > tutoriel mysql > Comment simuler la fonctionnalité ROWID d'Oracle dans MySQL ?

Comment simuler la fonctionnalité ROWID d'Oracle dans MySQL ?

Linda Hamilton
Libérer: 2024-12-01 00:24:19
original
186 Les gens l'ont consulté

How to Simulate Oracle's ROWID Functionality in MySQL?

Équivalent MySQL du RowID d'Oracle

Dans MySQL, il n'y a pas d'équivalent direct au rowid d'Oracle. Cependant, il est possible d'obtenir des fonctionnalités similaires en utilisant des variables de session et des sous-requêtes.

Pour supprimer les lignes en double et appliquer une clé primaire composite, vous pouvez utiliser l'approche suivante :

SELECT @rowid:=@rowid+1 as rowid
FROM my_table, (SELECT @rowid:=0) as init
ORDER BY field1, field2
Copier après la connexion

Cette requête attribuez des rowids à la table, mais notez que les sous-requêtes ne peuvent pas trier les tables que vous essayez de supprimer.

Pour résoudre cette limitation, créez une table temporaire, insérez la plage sous-requête dedans et supprimez-la de la table d'origine en fonction d'une jointure avec la table temporaire à l'aide d'un identifiant de ligne unique :

CREATE TEMPORARY TABLE duplicates ...

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;

DELETE FROM my_table USING my_table JOIN duplicates
  ON my_table.some_row_uid = duplicates.some_row_uid AND duplicates.rowid > 0
Copier après la connexion

Cette méthode devrait fonctionner pour votre opération ponctuelle sans surcharge significative.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal