UNIONs (UNION
og UNION ALL
) kræver, at alle forespørgsler, der er UNION, har:
- Samme antal kolonner i SELECT-sætningen
- Kolonnedatatypen skal matche på hver position
Din forespørgsel har:
SELECT f.*, u1.*, u2.* ...
UNION
SELECT fid2 FROM friends
Den nemmeste omskrivning, jeg har, er:
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;
Du har FORLADT JOIN'd til USERS
tabel to gange, men ser ikke ud til at bruge oplysningerne.