sql >> Base de Datos >  >> RDS >> Mysql

Las sentencias SELECT usadas tienen un número diferente de columnas (¡¡REDUX!!)

UNIONES (UNION y UNION ALL ) requieren que todas las consultas que se realicen en UNION tengan:

  1. El mismo número de columnas en la cláusula SELECT
  2. El tipo de datos de la columna debe coincidir en cada posición

Su consulta tiene:

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

La reescritura más fácil que tengo es:

   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;

Has LEFT JOIN a los USERS tabla dos veces, pero no parece estar usando la información.