亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MySQL按順序獲得行位置

MySQL按順序獲得行位置

精慕HU 2019-08-03 03:03:43
MySQL按順序獲得行位置使用以下MySQL表:+-----------------------------++ id INT UNSIGNED             ++ name VARCHAR(100)           ++-----------------------------+如何選擇單株行及其在表中其他行中的位置(按name ASC..因此,如果表數據如下所示,則按名稱排序時:+-----------------------------++ id | name                   ++-----------------------------++  5 | Alpha                  ++  7 | Beta                   ++  3 | Delta                  ++ .....                       ++  1 | Zed                    ++-----------------------------+如何選擇Beta得到該行當前位置的行?我正在尋找的結果集如下所示:+-----------------------------++ id | position | name        ++-----------------------------++  7 |        2 | Beta        ++-----------------------------+我可以做一個簡單的SELECT * FROM tbl ORDER BY name ASC然后枚舉PHP中的行,但是僅僅為一行加載一個可能很大的結果集似乎是浪費的。
查看完整描述

3 回答

?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

這是我唯一能想到的辦法:

SELECT `id`,
       (SELECT COUNT(*) FROM `table` WHERE `name` <= 'Beta') AS `position`,
       `name`FROM `table`WHERE `name` = 'Beta'


查看完整回答
反對 回復 2019-08-04
?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

如果查詢很簡單,并且返回的結果集的大小可能很大,則可以嘗試將其拆分為兩個查詢。

第一個查詢具有窄帶篩選條件,僅用于檢索該行的數據,第二個查詢使用COUNT帶著WHERE子句來計算位置。

例如,在您的情況下

查詢1:

SELECT * FROM tbl WHERE name = 'Beta'

查詢2:

SELECT COUNT(1) FROM tbl WHERE name >= 'Beta'

我們在一個有2M記錄的表中使用這種方法,這比OMG的方法更具可伸縮性。




查看完整回答
反對 回復 2019-08-04
  • 3 回答
  • 0 關注
  • 436 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號