2015-12-11 4 views
0

У меня есть следующая таблица:TSQL: Как получить уникальный rownumbers без сортировки

DECLARE @MyTable TABLE (Id UNIQUEIDENTIFIER, MyColumn NVARCHAR(50)) 
INSERT INTO @MyTable (Id, MyColumn) 
VALUES (NEWID(), N'1') 
     ,(NEWID(), N'1234') 
     ,(NEWID(), N'12') 
     ,(NEWID(), N'123') 

SELECT 
    ROW_NUMBER() OVER(ORDER BY MyColumn) as rownumber, 
    MyColumn 
FROM @MyTable 

С определенного выбора запроса я получаю правильный RowNumber но мой заказ Вкладыш ушел, а также.

возвращает:

rownumber MyColumn 
----------- --------- 
1   1 
2   12 
3   123 
4   1234 

Я понимаю, почему она сортирует (OVER(ORDER BY ...) требуется), но это не то, что я хочу.

Как я могу получить рулонный номер без сортировать результат?

+0

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

+0

Строки не имеют установленного порядка. – Paparazzi

ответ

0

Привет, вы можете использовать это решение, если вы действительно хотите использовать rn, а также удалить данные betwen вставить и выбрать оператор ... Если нет удаления или какой-либо другой логики между вами, вы можете выбрать только identity_column, тогда вам не нужно RN, просто закажите по id_identity, затем вы достигнете данных, упорядоченных по вставке ...

DECLARE @MyTable TABLE (Id UNIQUEIDENTIFIER, MyColumn NVARCHAR(50), id_identity int identity) 
     INSERT INTO @MyTable (Id, MyColumn) 
     VALUES (NEWID(), N'1') 
       ,(NEWID(), N'1234') 
       ,(NEWID(), N'12') 
       ,(NEWID(), N'123') 
/*Some logic here*/   

     SELECT 
      ROW_NUMBER() OVER(ORDER BY id_identity) as rownumber, 
      MyColumn 
     FROM @MyTable 
+0

Не будет ли это так же, как select id_identity – Paparazzi

+0

Как я уже сказал, только если между не будет реализована какая-то логика, например, удалите некоторые значения, тогда идентификатор может быть 1,3,4 .. Знаете, но я полагаю, он want 1,2,3 ... – Matej

+0

Если нет, он должен использовать id_identity и order by id_identity clausule ... – Matej