mySQL从计算值返回不同的行

时间:2017-07-28 05:56:51

标签: mysql select subquery

SELECT table1.id, (SELECT MIN(SQRT( POW( 69.1 * ( latitude - table1.lat ) , 
2 ) + POW( 69.1 * ( table1.lon - longitude ) * COS( latitude / 57.3 ) , 2 ) 
)) from table2 limit 1) AS distance FROM table1

结果本身似乎是正确的,但我实际上希望查询根据计算的值返回table2.id。我怎样才能做到这一点?

table1 contains id, lat, lon

table2 contains id, latitude, longitude

我需要使用table2中的数据为table1中的每一行获取最小距离的ID(table2.id)。

1 个答案:

答案 0 :(得分:0)

SELECT table1.id, (SELECT table2.id from table2 order by (SQRT( POW( 69.1 * ( 
latitude - table1.lat ) , 2 ) + POW( 69.1 * ( table1.lon - longitude ) * COS( 
latitude / 57.3 ) , 2 ) )) limit 0,1 ) as table2_id FROM table1