Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

As instruções SELECT usadas têm um número diferente de colunas (REDUX!!)


UNIÕES (UNION e UNION ALL ) exigem que todas as consultas UNION'd tenham:
  1. O mesmo número de colunas na cláusula SELECT
  2. O tipo de dados da coluna deve corresponder em cada posição

Sua consulta tem:
SELECT f.*, u1.*, u2.* ...
UNION 
SELECT fid2 FROM friends

A reescrita mais fácil que tenho é:
   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;

Você fez o LEFT JOIN para os USERS tabela duas vezes, mas não parecem estar usando as informações.