Mysql
 sql >> Base de données >  >> RDS >> Mysql

Les instructions SELECT ont un nombre différent de colonnes

C'est parce que votre 1er SELECT et 2ème SELECT avoir un nombre variable de colonnes, depuis que vous avez introduit Distance en 2ème SELECT .

Alors essayez de faire Distance dans la 1ère requête null ou 0 comme suit.

SELECT * FROM
(
   SELECT *, 0 as Distance
   FROM user u
   INNER JOIN employee e ON (u.empid = e.empid)
   INNER JOIN awards a ON (u.empid = a.empid)
   WHERE u.empid = 123

   UNION

   SELECT *, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) )+ sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance
   FROM user u
   INNER JOIN employee e ON (u.empid = e.empid)
   INNER JOIN awards a ON (u.empid = a.empid)
   HAVING distance < 25
   ORDER BY distance
) a
ORDER BY timestamp DESC