在mysql中组合2个选择查询

时间:2014-01-19 20:07:34

标签: mysql sql

我有两个选择语句:

  1. emp获得特定emp id奖励的时间戳

    SELECT * FROM user_table,employeetable,awards where user_table.empid=employeetable.empid AND user_table.empid=awards.empid AND user_table.empid=123 ORDER BY timestamp DESC

  2. 所有员工都离当前位置约25英里:current location: lat =37 lng=-122

    SELECT * ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) )+ sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM user_table,employeetable,awards where user_table.empid=employeetable.empid AND user_table.empid=awards.empid HAVING distance < 25 ORDER BY distance;

  3. 如何将两者和ORDER BY时间戳结合起来?顺便说两句都有字段时间戳。

    1.具有特定用户
    2.特定半径范围内的所有用户

    我非常感谢任何帮助。谢谢你。

1 个答案:

答案 0 :(得分:1)

您可以将两个查询合并为一个查询,只需使用where子句中的逻辑(这已转换为having子句:

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 join
     employee e
     on u.empid = e.empid join
     awards a
     on u.empid = a.empid
having empid = 123 or distance < 25;

这使用having代替where,因此可以使用distance列别名代替公式。