7

次のクエリを使用して、指定した緯度と経度に最も近い行を選択しています。次に、結果は距離順に並べられ、選択されたデータセットから最も近い行が返されます。

ただし、次に、フィールドごとに返された最も近い行expiry_dateを並べ替えて、そのデータセットを並べ替え、最後が最も早く(有効期限が最も近い)、一番下が最も長くなるようにします。

どうすればいいのか教えてください。

SELECT * , ( 6371 * ACOS( COS( RADIANS( latitude ) ) * COS( RADIANS( 51.61062 ) ) * COS( RADIANS( - 0.236952 ) - RADIANS( longitude ) ) + SIN( RADIANS( latitude ) ) * SIN( RADIANS( 51.61062 ) ) ) ) AS distance
FROM  `questions` 
WHERE  `expiry_date` > 
CURRENT_TIMESTAMP HAVING distance <=50000
ORDER BY distance
LIMIT 0 , 15
4

2 に答える 2

36

ORDER BYカンマ区切りのリストにすることができます。存在順にそれらをリストするだけです:

SELECT * , ( 6371 * ACOS( COS( RADIANS( latitude ) ) * COS( RADIANS( 51.61062 ) ) * COS( RADIANS( - 0.236952 ) - RADIANS( longitude ) ) + SIN( RADIANS( latitude ) ) * SIN( RADIANS( 51.61062 ) ) ) ) AS distance
FROM  `questions` 
WHERE  `expiry_date` > 
CURRENT_TIMESTAMP HAVING distance <=50000
ORDER BY distance
, expiry_date DESC
LIMIT 0 , 15
于 2012-08-21T20:31:13.310 に答える
0

サブクエリが必要です:

select t.*
from (<your query here>) t
order by expiry_date desc
于 2012-08-21T20:32:10.410 に答える