Mysql
 sql >> Database >  >> RDS >> Mysql

Le istruzioni SELECT utilizzate hanno un diverso numero di colonne (REDUX!!)

UNION (UNION e UNION ALL ) richiedono che tutte le query in fase di UNION abbiano:

  1. Lo stesso numero di colonne nella clausola SELECT
  2. Il tipo di dati della colonna deve corrispondere in ogni posizione

La tua richiesta ha:

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

La riscrittura più semplice che ho è:

   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;

Ti sei unito a USERS table due volte, ma sembra che non utilizzi le informazioni.