Maison >base de données >tutoriel mysql >Pourquoi est-ce que je reçois une erreur « La colonne n'est pas valide dans la liste de sélection » dans ma requête SQL ?
SQL "La colonne n'est pas valide dans la liste de sélection" Erreur expliquée
Les requêtes de base de données doivent suivre la règle de la valeur unique. Cela signifie que toute colonne de votre SELECT
déclaration doit soit :
GROUP BY
(regroupant les lignes en fonction de valeurs de colonne spécifiques).SUM
, MIN
, MAX
, AVG
, COUNT
, etc.).Problème avec la requête SQL :
La requête suivante viole cette règle :
<code class="language-sql">select * from Employee as emp full join Location as loc on emp.LocationID = loc.LocationID group by (loc.LocationID)</code>
Le *
sélectionne toutes les colonnes. Cependant, Employee.EmpID
(et les autres colonnes Employee
) ne sont ni regroupées par (GROUP BY
) ni agrégées. Étant donné que plusieurs employés peuvent partager un loc.LocationID
, la requête est ambiguë : elle ne sait pas quel Employee.EmpID
renvoyer pour chaque emplacement.
Solutions :
Pour résoudre ce problème, vous avez deux options principales :
GROUP BY
:<code class="language-sql">select emp.EmpID, loc.LocationID from Employee as emp full join Location as loc on emp.LocationID = loc.LocationID group by emp.EmpID, loc.LocationID</code>
Cela regroupe les résultats par identifiant d'employé et par identifiant d'emplacement, fournissant un résultat unique pour chaque employé sur chaque emplacement.
<code class="language-sql">select loc.LocationID, count(emp.EmpID) as EmployeeCount from Employee as emp full join Location as loc on emp.LocationID = loc.LocationID group by loc.LocationID</code>
Cela compte le nombre d'employés (count(emp.EmpID)
) sur chaque site. D'autres fonctions d'agrégation pourraient être utilisées pour calculer des sommes, des moyennes ou d'autres statistiques.
En suivant la règle de la valeur unique, vos requêtes SQL produiront des résultats clairs, sans ambiguïté et prévisibles.
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!