sql >> Databasteknik >  >> RDS >> Mysql

De använda SELECT-satserna har ett annat antal kolumner (REDUX!!)

UNIONs (UNION och UNION ALL ) kräver att alla frågor som UNION har:

  1. Samma antal kolumner i SELECT-satsen
  2. Kolumndatatypen måste matcha vid varje position

Din fråga har:

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

Den enklaste omskrivningen jag har är:

   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 LÄMNT JOIN'd till USERS tabell två gånger, men verkar inte använda informationen.




  1. Aggregera data med hjälp av gruppfunktioner (gruppera efter orakel)

  2. Hur man duplicerar en databas med phpMyAdmin

  3. Skapa en CTE i Oracle

  4. TCL-kommandon i SQL