Maison > base de données > tutoriel mysql > Comment résoudre l'erreur SQL 1066 : « Table/alias non unique : 'utilisateur' » ?

Comment résoudre l'erreur SQL 1066 : « Table/alias non unique : 'utilisateur' » ?

Barbara Streisand
Libérer: 2025-01-01 02:52:16
original
349 Les gens l'ont consulté

How to Resolve SQL Error 1066:

Erreur de dépannage 1066 : "Table/Alias ​​non unique : 'utilisateur'" dans les requêtes SQL

Lorsque vous travaillez avec des requêtes de base de données, vous pouvez rencontrer l'erreur 1066, qui indique une table ou un alias non unique. Cela se produit généralement lorsque vous rejoignez la même table plusieurs fois sans spécifier les alias appropriés.

Considérez le scénario suivant : vous disposez d'une table d'articles avec des colonnes telles que author_id et approved_by qui font référence à des lignes dans la table user. Votre requête SQL vise à récupérer des données de la table d'articles et à récupérer des informations sur l'auteur et l'utilisateur qui a modifié l'article pour la dernière fois. Cependant, lorsque vous exécutez la requête, vous recevez l'erreur :

#1066 - Not unique table/alias: 'user'
Copier après la connexion

Ce message d'erreur signifie que la table utilisateur a été jointe plusieurs fois dans la requête sans recevoir d'alias uniques.

Explication du problème

Lorsque vous rejoignez la même table plusieurs fois, la base de données doit faire la distinction entre les différentes instances de cette table. Pour ce faire, vous devez attribuer des alias uniques à chaque instance. Ceci est particulièrement crucial lorsque vous récupérez des colonnes de plusieurs instances jointes, comme vous l'avez fait dans votre requête :

SELECT article.*, section.title, category.title, user.name, user.name
FROM article
INNER JOIN section ON article.section_id = section.id
INNER JOIN category ON article.category_id = category.id
INNER JOIN user ON article.author_id = user.id
LEFT JOIN user ON article.modified_by = user.id
WHERE article.id = '1'
Copier après la connexion

Remarquez que vous avez utilisé l'alias d'utilisateur deux fois sans faire la distinction entre les deux instances de la table. Cela confond la base de données et conduit à l'erreur « Table/alias non unique ».

Résoudre le problème

Pour résoudre ce problème, vous devez donner le table utilisateur un alias lorsque vous la rejoignez pour la deuxième fois. Cela différenciera les deux instances et permettra à la requête d'être exécutée avec succès.

Voici comment vous pouvez modifier votre code pour corriger l'erreur :

SELECT article.*, section.title, category.title, user.name, u2.name
FROM article
INNER JOIN section ON article.section_id = section.id
INNER JOIN category ON article.category_id = category.id
INNER JOIN user ON article.author_id = user.id
LEFT JOIN user u2 ON article.modified_by = u2.id
WHERE article.id = '1'
Copier après la connexion

Dans cette requête mise à jour, la seconde L'instance de la table utilisateur reçoit l'alias u2. Cela permet à la base de données de différencier les deux instances et de résoudre l'erreur.

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!

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