UNION (UNION
e UNION ALL
) richiedono che tutte le query in fase di UNION abbiano:
- Lo stesso numero di colonne nella clausola SELECT
- 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.