Maison > base de données > tutoriel mysql > le corps du texte

Comment corriger \'ERREUR 1222 (21000) : les instructions SELECT utilisées ont un nombre différent de colonnes\' dans les instructions UNION ?

Susan Sarandon
Libérer: 2024-11-03 21:47:30
original
372 Les gens l'ont consulté

How to Fix

Erreur : Disparité dans le nombre de colonnes entre les instructions UNIONed SELECT

Dans la requête fournie, vous rencontrez l'erreur : "ERREUR 1222 (21000) : Les instructions SELECT utilisées ont un nombre de colonnes différent." Cette erreur se produit lorsque les instructions SELECT d'une instruction UNION renvoient un nombre de colonnes inégal.

Dans votre requête, la première instruction SELECT :

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)
Copier après la connexion

renvoie trois colonnes : friends.fid1 , friends.fid2 et colonnes des tables des utilisateurs joints (u1 et u2). Cependant, la deuxième instruction SELECT :

SELECT fid2 FROM friends
WHERE (friends.fid2 = 1) AND (friends.fid1 < 1)
Copier après la connexion

ne renvoie qu'une seule colonne : friends.fid2.

Exigences UNION pour la correspondance des colonnes

Pour qu'une opération UNION réussisse, toutes les instructions SELECT combinées doivent respecter ce qui suit exigences :

  • Nombre de colonnes correspondantes : Chaque instruction SELECT doit renvoyer le même nombre de colonnes.
  • Types de données de colonnes correspondantes : Le les types de données des colonnes à chaque position de la clause SELECT doivent match.

Résolution

Pour résoudre cette erreur, vous devez vous assurer que toutes les instructions SELECT de votre opération UNION renvoient le même nombre de colonnes avec des données correspondantes genres. Par exemple, vous pouvez réécrire votre requête comme :

SELECT friends.*, u.*
FROM friends
JOIN users AS u ON u.uid = friends.fid2
WHERE friends.fid1 = 1 AND friends.fid2 > 1
UNION
SELECT friends.*, u.*
FROM friends
JOIN users AS u ON u.uid = friends.fid1
WHERE friends.fid2 = 1 AND friends.fid1 < 1
ORDER BY RAND()
LIMIT 6;
Copier après la connexion

Dans cette requête révisée, les deux instructions SELECT renvoient le même nombre de colonnes (cinq) avec des types de données correspondants, résolvant ainsi 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!

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