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)
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)
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 :
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;
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!