返された行を列挙できるかどうか疑問に思いました。列の内容に応じてではなく、順次整数インデックスを生成するだけです。例えば。
select ?, count(*) as usercount from users group by age
線に沿って何かを返します:
1 12
2 78
3 4
4 42
試してください:
SELECT
ROW_NUMBER() OVER(ORDER BY age) AS RowNumber
,count(*) as usercount
from users
group by age
Oracleの場合は、rownum
を使用します。
SELECT SOMETABLE.*, ROWNUM RN
FROM SOMETABLE
WHERE SOMETABLE.SOMECOLUMN = :SOMEVALUE
ORDER BY SOMETABLE.SOMEOTHERCOLUMN;
最終的な答えは、使用しているデータベースによって完全に異なります。
MySqlの場合:
SELECT @row := @row + 1 as row FROM anytable a, (SELECT @row := 0) r
それをどのように行うかは、データベースサーバーによって異なります。 SQL Serverでは、row_number()
を使用できます。
select row_number() over (order by age)
, age
, count(*) as usercount
from users
group by
age
order by
age
ただし、多くの場合、クライアント側の行番号を使用する方が簡単で高速です。
rownumber SQLサーバーで使用可能な関数を使用します
SELECT
ROW_NUMBER() OVER (ORDER BY columnNAME) AS 'RowNumber',count(*) as usercount
FROM users
Mysql
の場合
set @row:=0;
select @row:=@row+1 as row, a.* from table_name as a;