Как определить, какие строки в таблице неправильно отсортированы по родительской таблице - PullRequest
1 голос
/ 16 февраля 2011

У меня следующая структура таблицы:

table Parent (Id)

table Child (ParentId, SortOrder, Id, Data)

Нормальные данные должны выглядеть в таблице Child следующим образом:

ParentId    SortOrder   Id     Data
--------    ---------   ----   ----
   1            0        100   'Samuel'
   1            1        101   'Levi'
   1            2        102   'Isaac'
   2            0        103   'Emma'
   3            0        104   'Maddison'

К сожалению, что-то повреждено, чтобы сделатьданные выглядят следующим образом:

ParentId    SortOrder   Id     Data
--------    ---------   ----   ----
   1            2        100   'Samuel'
   1            4        101   'Levi'
   1            5        102   'Isaac'
   2            3        103   'Emma'
   3            0        104   'Maddison'

Как я могу определить с помощью SQL родителей с детьми, которые не упорядочены должным образом через мой столбец SortOrder, начинающийся с нуля?

Запрос SQL сказал бы мне, что ParentId 1 и 2 недопустимы.

1 Ответ

3 голосов
/ 16 февраля 2011

Вы можете сравнить сгенерированный Row_number с записанным сортировщиком

select distinct ParentId
from 
(
select *, rn=ROW_NUMBER() over (partition by parentid order by sortorder) -1
from Child
) X
where rn <> Sortorder
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...