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

列の値を列名として使用するmysql

    同じSELECT内の列エイリアスを参照することはできません 句。サブクエリに移動する必要があります。また、WHEREでエイリアスを参照することはできません 同じSELECTの句 、HAVINGを使用する必要があります 。

    SELECT *, (((acos(sin(("26.851791"*pi()/180)) * sin((`lat`*pi()/180))+cos(("26.851791"*pi()/180)) * cos((`lat`*pi()/180)) * cos((("75.781810"- `lng`)*pi()/180))))*180/pi())*60*1.1515*1.609344) as distance
    FROM (SELECT *, 
            SUBSTRING_INDEX( location, ',', 1 ) AS lat, 
            SUBSTRING_INDEX( location, ',', -1 ) AS lng
          FROM users_test) x
    HAVING distance > 5
    

    毎回カンマで分割するのではなく、緯度と経度をそれぞれの列に配置するようにテーブルのデザインを修正することを強くお勧めします。




    1. MySql-HAVING vs WHERE

    2. SQLクエリでオプションのパラメータを処理する方法は?

    3. Microsoft SQL Serverでシーケンスをどのように実装しますか?

    4. SQLで行に番号を付ける方法