sql >> Database teknologi >  >> RDS >> Mysql

De brugte SELECT-sætninger har et andet antal kolonner (REDUX!!)

UNIONs (UNION og UNION ALL ) kræver, at alle forespørgsler, der er UNION, har:

  1. Samme antal kolonner i SELECT-sætningen
  2. Kolonnedatatypen skal matche på hver position

Din forespørgsel har:

SELECT f.*, u1.*, u2.* ...
UNION 
SELECT fid2 FROM friends

Den nemmeste omskrivning, jeg har, er:

   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;

Du har FORLADT JOIN'd til USERS tabel to gange, men ser ikke ud til at bruge oplysningerne.




  1. Sådan oprettes fremmednøglebegrænsning på flere kolonner i SQL Server - SQL Server / TSQL vejledning del 67

  2. IGNORE_DUP_KEY langsommere på klyngede indekser

  3. MySQL - Trigger til opdatering af samme tabel efter indsættelse

  4. Hvordan oprettes lagrede procedurer i SQL?