sql >> データベース >  >> RDS >> Mysql

MySQLの距離計算(簡単な解決策)

    sqlステートメントの別の部分からselect句のエイリアスを参照することはできません。式全体をwhere句に入れる必要があります:

    WHERE
        ROUND( SQRT( POW( ( (69.1/1.61) * ('52.64' - latitude)), 2)
            + POW(( (53/1.61) * ('6.88' - longitude)), 2)), 1) < 10
    

    よりクリーンな解決策は、サブクエリを使用して計算データを生成することです。

      SELECT *, distance
        FROM (
           SELECT *,
               ROUND( SQRT( POW( ( (69.1/1.61) * ('52.64' - latitude)), 2)
                   + POW(( (53/1.61) * ('6.88' - longitude)), 2)), 1) AS distance
               FROM lp_relations_addresses
           ) d
       WHERE d.distance < 10
    ORDER BY d.distance DESC
    

    デモ: http://www.sqlize.com/q96p2mCwnJ



    1. エラーを与えるOracleクエリ

    2. Group By句を持つ—eleinのGeneralBits

    3. XMLをファイルに書き込む方法(PL / SQL)?

    4. MySQLデータベースからランダムデータを取得しますが、データを繰り返しません