Mysql
 sql >> Base de données >  >> RDS >> Mysql

Les instructions SELECT utilisées ont un nombre différent de colonnes (REDUX !!)

UNIONS (UNION et UNION ALL ) exigent que toutes les requêtes UNION aient :

  1. Le même nombre de colonnes dans la clause SELECT
  2. Le type de données de la colonne doit correspondre à chaque position

Votre requête a :

SELECT f.*, u1.*, u2.* ...
UNION 
SELECT fid2 FROM friends

La réécriture la plus simple que j'ai 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 < 1
ORDER BY RAND()
LIMIT 6;

Vous êtes LAISSÉ JOIN aux USERS table deux fois, mais ne semble pas utiliser les informations.