第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

MySQL-獲取選擇的行號

MySQL-獲取選擇的行號

慕沐林林 2019-06-15 10:27:14
MySQL-獲取選擇的行號如果對項進行排序,我可以運行SELECT語句并獲取行號嗎?我有一張這樣的桌子:mysql> describe orders;+-------------+---------------------+------+-----+---------+----------------+| Field       | Type                | Null | Key | Default | Extra          |+-------------+---------------------+------+-----+---------+----------------+| orderID     | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment || itemID      | bigint(20) unsigned | NO   |     | NULL    |                |+-------------+---------------------+------+-----+---------+----------------+然后,我可以運行這個查詢,按ID獲取訂單數(shù)量:SELECT itemID, COUNT(*) as ordercountFROM ordersGROUP BY itemID ORDER BY ordercount DESC;這給了我一個數(shù)字itemID在這張桌子上:+--------+------------+| itemID | ordercount |+--------+------------+|    388 |          3 ||    234 |          2 ||   3432 |          1 ||    693 |          1 ||   3459 |          1 |+--------+------------+我也想要行號,所以我可以看出來itemID=388是第一排,234是第二位,等等(本質(zhì)上是對訂單的排序,而不僅僅是原始的計數(shù))。當我得到結(jié)果集時,我知道我可以用Java來完成這個任務(wù),但是我想知道是否有一種方法可以完全在SQL中處理它。更新設(shè)置級別會將其添加到結(jié)果集,但沒有正確排序:mysql> SET @rank=0;Query OK, 0 rows affected (0.00 sec)mysql> SELECT @rank:=@rank+1 AS rank, itemID, COUNT(*) as ordercount    -> FROM orders    -> GROUP BY itemID ORDER BY rank DESC;+------+--------+------------+| rank | itemID | ordercount |+------+--------+------------+|    5 |   3459 |          1 ||    4 |    234 |          2 ||    3 |    693 |          1 ||    2 |   3432 |          1 ||    1 |    388 |          3 |+------+--------+------------+5 rows in set (0.00 sec)
查看完整描述

3 回答

?
FFIVE

TA貢獻1797條經(jīng)驗 獲得超6個贊

看一看這,這個.

將查詢更改為:

SET @rank=0;SELECT @rank:=@rank+1 AS rank, itemID, COUNT(*) as ordercount  FROM orders  GROUP BY itemID  ORDER BY ordercount DESC;
SELECT @rank;

最后一個選擇是您的計數(shù)。


查看完整回答
反對 回復(fù) 2019-06-15
?
翻過高山走不出你

TA貢獻1875條經(jīng)驗 獲得超3個贊

SELECT @rn:=@rn+1 AS rank, itemID, ordercountFROM (
  SELECT itemID, COUNT(*) AS ordercount  FROM orders  GROUP BY itemID  ORDER BY ordercount DESC) t1, (SELECT @rn:=0) t2;


查看完整回答
反對 回復(fù) 2019-06-15
?
不負相思意

TA貢獻1777條經(jīng)驗 獲得超10個贊

Swamibebop的解決方案起作用了,但是利用了table.*語法,我們可以避免重復(fù)內(nèi)部的列名。select得到一個更簡單/更短的結(jié)果:

SELECT @r := @r+1 , 
       z.* FROM(/* your original select statement goes in here */)z, (SELECT @r:=0)y;

所以這會給你:

SELECT @r := @r+1 , 
       z.* FROM(
     SELECT itemID, 
     count(*) AS ordercount     FROM orders     GROUP BY itemID     ORDER BY ordercount DESC
    )z,
    (SELECT @r:=0)y;


查看完整回答
反對 回復(fù) 2019-06-15
  • 3 回答
  • 0 關(guān)注
  • 2259 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號