UNII (UNION
i UNION ALL
) wymagają, aby wszystkie zapytania będące UNION miały:
- Ta sama liczba kolumn w klauzuli SELECT
- Typ danych kolumny musi być zgodny w każdej pozycji
Twoje zapytanie zawiera:
SELECT f.*, u1.*, u2.* ...
UNION
SELECT fid2 FROM friends
Najłatwiejsze przepisanie, jakie mam, to:
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;
Opuściłeś JOIN do USERS
tabeli dwa razy, ale wygląda na to, że nie używa tych informacji.