我有两个选择语句:
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
所有员工都离当前位置约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;
如何将两者和ORDER BY时间戳结合起来?顺便说两句都有字段时间戳。
1.具有特定用户
2.特定半径范围内的所有用户
我非常感谢任何帮助。谢谢你。
答案 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
列别名代替公式。