UNIONs (UNION
und UNION ALL
) erfordern, dass alle Abfragen, die UNION sind, Folgendes haben:
- Die gleiche Anzahl von Spalten in der SELECT-Klausel
- Der Datentyp der Spalte muss an jeder Position übereinstimmen
Ihre Abfrage hat:
SELECT f.*, u1.*, u2.* ...
UNION
SELECT fid2 FROM friends
Die einfachste Umschreibung, die ich habe, ist:
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;
Sie sind den USERS
LINKS beigetreten Tabelle zweimal, aber scheinen die Informationen nicht zu verwenden.