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

xマイル半径内の他の行のmySQL経度および緯度クエリ

    使用している店舗検索で使用するクエリは次のとおりです。

    SELECT
        `id`,
        (
            6371 *
            acos(
                cos( radians( :lat ) ) *
                cos( radians( `lat` ) ) *
                cos(
                    radians( `long` ) - radians( :long )
                ) +
                sin(radians(:lat)) *
                sin(radians(`lat`))
            )
        ) `distance`
    FROM
        `location`
    HAVING
        `distance` < :distance
    ORDER BY
        `distance`
    LIMIT
        25
    

    :lat および:long latでユーザーが通過したポイントです およびlong データベースに保存されているポイントです。

    :distanceはマイルで測定されます。コードの作業バージョンでは、:distanceは実際には10〜50マイルの範囲のドロップダウンから取得されます

    キロメートルで動作するようにコードを変更するには、そのソリューションのjoshhendoのおかげで、3959(地球の中心から地表までの距離(マイル))を6371(3959マイルをキロメートルに変換)に変更することができます。




    1. 列内の個別の値の数を取得するにはどうすればよいですか?

    2. フィルタされたインデックスを追加することの予期しない副作用

    3. 不動産業者のデータモデル

    4. Oracleでマイナス/プラス記号を使用して数値をフォーマットする方法