СЪЮЗИ (UNION
и UNION ALL
) изискват всички заявки, които са UNION, да имат:
- Същият брой колони в клаузата SELECT
- Типът данни на колоната трябва да съвпада на всяка позиция
Вашата заявка съдържа:
SELECT f.*, u1.*, u2.* ...
UNION
SELECT fid2 FROM friends
Най-лесното пренаписване, което имам, е:
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;
Напуснахте ПРИСЪЕДИНЕНИЯ към USERS
таблица два пъти, но изглежда не използва информацията.