it-swarm.com.ru

Как создать поле автоинкремента в запросе выбора

Например, у меня есть таблица с 2 столбцами, first_name и last_name с этими значениями

ALi           Khani
Elizabette    Amini
Britney       Spears
,...

Я хочу написать select запрос, который сгенерирует таблицу следующим образом:

1     ALi           Khani
2     Elizabette    Amini
3     Britney       Spears
,...

Спасибо за вашу помощь.

61
wf Khani

Если это MySql, вы можете попробовать

SELECT @n := @n + 1 n,
       first_name, 
       last_name
  FROM table1, (SELECT @n := 0) m
 ORDER BY first_name, last_name

SQLFiddle

И для SQLServer

SELECT row_number() OVER (ORDER BY first_name, last_name) n,
       first_name, 
       last_name 
  FROM table1 

SQLFiddle

113
peterm

здесь для SQL server, Oracle, PostgreSQL, которые поддерживают оконные функции.

SELECT  ROW_NUMBER() OVER (ORDER BY first_name, last_name)  Sequence_no,
        first_name,
        last_name
FROM    tableName
26
John Woo

В случае, если у вас нет естественного значения раздела и вы просто хотите упорядочить число независимо от раздела, вы можете просто сделать row_number над константой, в следующем примере я только что использовал 'X' . Надеюсь, это кому-нибудь поможет

select 
    ROW_NUMBER() OVER(PARTITION BY num ORDER BY col1) as aliascol1, 
    period_next_id, period_name_long
from 
(
  select distinct col1, period_name_long, 'X' as num
  from {TABLE} 
) as x
3
balgar jagpal
DECLARE @id INT 
SET @id = 0 
UPDATE cartemp
SET @id = CarmasterID = @id + 1 
GO
0
Dev3