UNIÕES (
UNION
e UNION ALL
) exigem que todas as consultas UNION'd tenham:- O mesmo número de colunas na cláusula SELECT
- 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.