Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Die verwendeten SELECT-Anweisungen haben eine unterschiedliche Spaltenanzahl (REDUX!!)

UNIONs (UNION und UNION ALL ) erfordern, dass alle Abfragen, die UNION sind, Folgendes haben:

  1. Die gleiche Anzahl von Spalten in der SELECT-Klausel
  2. 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.