"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment résoudre « Erreur : les instructions SELECT utilisées ont un nombre différent de colonnes » dans les opérations UNION ?

Comment résoudre « Erreur : les instructions SELECT utilisées ont un nombre différent de colonnes » dans les opérations UNION ?

Publié le 2024-11-10
Parcourir:281

How to Resolve \

Erreur : écarts dans le nombre de colonnes dans les instructions SELECT

Lors de l'exécution d'une requête impliquant plusieurs instructions SELECT, comme une opération UNION, il est impératif pour garantir que chaque instruction contient exactement le même nombre de colonnes. Si vous ne le faites pas, l'erreur « Erreur : les instructions SELECT utilisées ont un nombre différent de colonnes ».

Pour résoudre ce problème, la requête doit être réécrite de telle sorte que chaque clause SELECT ait un numéro identique. de colonnes avec des types de données compatibles. Par exemple, la requête fournie :

SELECT * FROM friends
LEFT JOIN users AS u1 ON users.uid = friends.fid1
LEFT JOIN users AS u2 ON users.uid = friends.fid2
WHERE (friends.fid1 = 1) AND (friends.fid2 > 1)
UNION SELECT fid2 FROM friends
WHERE (friends.fid2  = 1) AND (friends.fid1 

souffre de cette erreur car le premier SELECT contient 4 colonnes ("", u1., u2.*), tandis que le second SELECT ne renvoie qu'une seule colonne ("fid2 ").

Une réécriture plus simple qui préserve la fonctionnalité prévue est :

SELECT f.*, u.*
FROM FRIENDS AS f
JOIN USERS AS u ON u.uid = f.fid2
WHERE f.fid1 = 1 
  AND f.fid2 > 1
UNION 
SELECT f.*, u.*
FROM FRIENDS AS f
JOIN USERS AS u ON u.uid = f.fid1
WHERE f.fid2  = 1 
  AND f.fid1 

En garantissant que les deux instructions SELECT renvoient le même nombre de colonnes avec des types de données correspondants, la requête peut être exécutée sans rencontrer l'erreur de nombre de colonnes. De plus, il élimine les jointures externes inutiles, qui semblent redondantes d'après le schéma fourni.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3