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

SELECT-Anweisungen haben eine unterschiedliche Anzahl von Spalten

Es liegt an Ihrem 1. SELECT und 2. SELECT haben eine unterschiedliche Anzahl von Spalten, seit Sie Distance eingeführt haben im 2. SELECT .

Versuchen Sie also, Distance zu machen in der ersten Abfrage null oder 0 wie folgt.

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