UNION (UNION
dan UNION ALL
) mengharuskan semua kueri yang menjadi UNION memiliki:
- Jumlah kolom yang sama dalam klausa SELECT
- Tipe data kolom harus cocok di setiap posisi
Kueri Anda memiliki:
SELECT f.*, u1.*, u2.* ...
UNION
SELECT fid2 FROM friends
Penulisan ulang termudah yang saya miliki adalah:
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;
Anda telah KIRI GABUNG ke USERS
tabel dua kali, tetapi tampaknya tidak menggunakan informasi tersebut.