在MySQL中,有時(shí)候我們需要在查詢(xún)結(jié)果中顯示每行的行號(hào),這時(shí)候可以使用MySQL提供的ROW_NUMBER()函數(shù)來(lái)實(shí)現(xiàn)記錄行號(hào)。
SELECT ROW_NUMBER() OVER() AS row_number, id, name, age FROM user;
上面的代碼中,ROW_NUMBER()函數(shù)會(huì)按照行號(hào)順序?yàn)槊恳恍猩梢粋€(gè)唯一的行號(hào)。OVER()表示不按照任何分區(qū)排序,如果需要按照某個(gè)字段排序可以添加ORDER BY語(yǔ)句。
需要注意的是,ROW_NUMBER()函數(shù)只在MySQL8.0及以上版本中支持。如果使用的是低版本MySQL,可以通過(guò)變量自增的方式實(shí)現(xiàn)記錄行號(hào)。
SELECT @row_num:=@row_num+1 AS row_number, id, name, age FROM user, (SELECT @row_num:=0) t;
上面的代碼中,@row_num表示變量名,:表示變量賦值,初始值為0,每查詢(xún)一次結(jié)果集,變量自增1,從而實(shí)現(xiàn)記錄行號(hào)。