我有以下表结构:
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无效。
答案 0 :(得分:3)
您可以将生成的Row_number与记录的排序顺序进行比较
select distinct ParentId
from
(
select *, rn=ROW_NUMBER() over (partition by parentid order by sortorder) -1
from Child
) X
where rn <> Sortorder