Вопрос по sql, enumeration – Как перечислить возвращаемые строки в SQL?

17

Мне было интересно, можно ли будет перечислить возвращенные строки. Не в соответствии с содержимым любого столбца, а просто с получением последовательного целочисленного индекса. Например.

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

возвратил бы что-то вроде:

1    12
2    78
3     4
4    42

это дляhttps://data.stackexchange.com/

@benv: это дляodata.stackexchange.com SilentGhost
Какую СУБД вы используете? BenV
@SilentGhost, то соответствующие теги могли бытьTSQL а такжеdataexplorer, Но теперь, когда есть ответы на вопросы mysql и oracle, менять его уже поздно. Cœur

Ваш Ответ

5   ответов
1

зависит от вашего сервера базы данных. В SQL Server вы можете использоватьrow_number():

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

Но часто проще и быстрее использовать номера строк на стороне клиента.

@KM: Верно, отредактировано в ответе Andomar
partition by age заставит номер отдыхать для каждогоageи запрос группируется по возрасту, поэтому номер строки будет равен 1 для каждой строки. KM.
3

Если это Oracle, используйтеrownum.

SELECT SOMETABLE.*, ROWNUM RN
FROM SOMETABLE
WHERE SOMETABLE.SOMECOLUMN = :SOMEVALUE
ORDER BY SOMETABLE.SOMEOTHERCOLUMN;

Окончательный ответ будет полностью зависеть от того, какую базу данных вы используете.

1

использованиеRowNumber функция доступна на сервере SQL

SELECT 
    ROW_NUMBER() OVER (ORDER BY columnNAME) AS 'RowNumber',count(*) as usercount
    FROM users
спасибо за ссылку SilentGhost
15

пытаться:

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

SELECT  @row := @row + 1 as row FROM anytable a, (SELECT @row := 0) r

Похожие вопросы