資料庫中根據經偉度排序查詢

2021-07-24 15:51:48 字數 1144 閱讀 4890

使用者列表中,使用者登陸時有傳入經偉度存入資料庫,而在查詢所有使用者列表中根據距離查詢使用者列表排序,這時傳入自己的經偉度查詢資料庫中所有使用者的經偉度進行排序顯示,

**:select s.*, coalesce(round(  

6378.138 * 2 * asin(  

sqrt(  

pow(  

sin(  

(  30.671010 * pi() / 180 - a.addressy * pi() / 180  

) / 2  

),  

2  ) + cos(30.671010 * pi() / 180) * cos(a.addressy * pi() / 180) * pow(  

sin(  

(  104.018484 * pi() / 180 -   a.addressx * pi() / 180  

) / 2  

),  

2  )  

)  ) * 1000

)  ,99999999) as son  from sys_user s left join sys_useraddress a on s.useraddressid = a.id  order by son asc;

sys_user:使用者表。

sys_useraddress :經偉度錶,與使用者有關聯

使用者自己經偉 度

a.addressy:30.674916

a.addressx:104.027317

連表查詢排序order by 經偉度的距離 

* 1000 算出來是公尺,當*1000時轉換為千公尺單位 

coalesce(距離 ,99999999)這是當沒獲取到使用者位置時,獲取別個使用者的經偉度獲取錯誤裡預設的距離,為99999999原因是:連表中獲取出來是null這樣就排序會在最前面所以得加個99999999這樣的話排序就在最後了。

結果出來了表字段也寫上:

user表(sys_user)

id  ,username,password,useraddressid,

address表(sys_useraddress)

id ,addressx,addressy,userid,addressname

將這兩張表關聯就可以使用上面的sql查詢排序了

資料庫查詢 排序

為了方便檢視資料,可以對資料進行排序 語法 select from 表名 order by 列1 asc desc 列2 asc desc,說明 例1 查詢未刪除男生資訊,按學號降序 select from students where gender 1 and is delete 0 order ...

資料庫查詢排序問題

資料庫分頁是後台經常要使用的技術手段,有時候進行資料庫查詢會根據業務需要對某一欄位排序,那麼當待排序字段值相同時,我們得到的查詢結果會是什麼呢?資料分頁時需要根據資料記錄建立時間create time欄位倒序,即使用order by create time desc,但是我們會發現,前端進行請求時獲...

MySQL資料庫 排序查詢

高階3 排序查詢 引入 select from employees 語法 select 查詢列表 from 表 where 篩選條件 order by 排序列表 asc desc 特點 1.asc是公升序,desc是降序 如果不寫,預設是公升序 2.order by子句中可以支援單個字段 多個字段 ...