UNIONs (UNION
và UNION ALL
) yêu cầu tất cả các truy vấn là UNION phải có:
- Cùng một số cột trong mệnh đề CHỌN
- Loại dữ liệu cột phải khớp ở mỗi vị trí
Truy vấn của bạn có:
SELECT f.*, u1.*, u2.* ...
UNION
SELECT fid2 FROM friends
Cách viết lại đơn giản nhất mà tôi có là:
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;
Bạn ĐÃ THAM GIA TRÁI vào USERS
bảng hai lần, nhưng dường như không sử dụng thông tin.