web-dev-qa-db-ja.com

SQLで返された行を列挙する方法は?

返された行を列挙できるかどうか疑問に思いました。列の内容に応じてではなく、順次整数インデックスを生成するだけです。例えば。

select ?, count(*) as usercount from users group by age

線に沿って何かを返します:

1    12
2    78
3     4
4    42

https://data.stackexchange.com/ 用です

18
SilentGhost

試してください:

SELECT
    ROW_NUMBER() OVER(ORDER BY age) AS RowNumber
        ,count(*) as usercount 
    from users 
    group by age
17
KM.

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
3
BenV

それをどのように行うかは、データベースサーバーによって異なります。 SQL Serverでは、row_number()を使用できます。

select  row_number() over (order by age)
,       age
,       count(*) as usercount 
from    users 
group by 
        age
order by
        age

ただし、多くの場合、クライアント側の行番号を使用する方が簡単で高速です。

1
Andomar

rownumber SQLサーバーで使用可能な関数を使用します

SELECT 
    ROW_NUMBER() OVER (ORDER BY columnNAME) AS 'RowNumber',count(*) as usercount
    FROM users
1
Pranay Rana

Mysqlの場合

set @row:=0;

select @row:=@row+1 as row, a.* from table_name as a;

0
srbcheema1