我想知道是否可以枚举返回的行。不是根据任何列内容而是仅产生顺序整数索引。 E.g。
select ?, count(*) as usercount from users group by age
会返回一些内容:
1 12
2 78
3 4
4 42
答案 0 :(得分:15)
尝试:
SELECT
ROW_NUMBER() OVER(ORDER BY age) AS RowNumber
,count(*) as usercount
from users
group by age
答案 1 :(得分:3)
如果是Oracle,请使用rownum
。
SELECT SOMETABLE.*, ROWNUM RN
FROM SOMETABLE
WHERE SOMETABLE.SOMECOLUMN = :SOMEVALUE
ORDER BY SOMETABLE.SOMEOTHERCOLUMN;
最终答案将完全取决于您正在使用的数据库。
答案 2 :(得分:2)
对于MySql:
SELECT @row := @row + 1 as row FROM anytable a, (SELECT @row := 0) r
答案 3 :(得分:1)
如何执行此操作取决于您的数据库服务器。在SQL Server中,您可以使用row_number()
:
select row_number() over (order by age)
, age
, count(*) as usercount
from users
group by
age
order by
age
但使用客户端行号通常更容易,更快捷。
答案 4 :(得分:1)
使用sql server中可用的rownumber函数
SELECT
ROW_NUMBER() OVER (ORDER BY columnNAME) AS 'RowNumber',count(*) as usercount
FROM users
答案 5 :(得分:0)
Mysql
set @row:=0;
select @row:=@row+1 as row, a.* from table_name as a;
答案 6 :(得分:0)
与大多数其他答案相反,并根据实际的OP问题,来
根据任何列内容枚举返回的行(...)否
但是按照返回查询的顺序,可以在ORDER BY
函数中将虚拟序数变量用于ROW_NUMBER
,例如
ROW_NUMBER() OVER(ORDER BY (SELECT 0) AS row_num
实际上可以使用任何内容作为SELECT
语句的参数,例如SELECT 100
,SELECT ‘A’
,SELECT NULL
等。
这样,行号将按照将数据添加到表中的顺序枚举。