我有如下表格
ID |CODE | Description
--------------------------
1 |A | Parent Test
2 |A.1 | First Level Child
3 |A.2 | First Level Child 2
4 |A.1.1 | Second Level Child
我想做一个Select并得到如下表格
ID |PARENT ID |CODE | Description
---------------------------------------
1 | 0 |A | Parent Test
2 | 1 |A.1 | First Level Child
3 | 1 |A.2 | First Level Child 2
4 | 2 |A.1.1 | Second Level Child
是否可以使用SQL SELECT语句从顶层表中获取预期的数据表?我不想在C#中这样做,因此我必须在SQL中执行它
答案 0 :(得分:1)
这样做需要一些字符串操作,这些操作不一定是SQL方言的标准。你需要在孩子和父母之间进行连接,这样孩子才能拥有一个“。”。在父代码之后。
这是一个标准的例子:SQL:
select child.id, parent.id, child.code, child.description
from t child join
t parent
on child.code like concat(parent.code, '.%') and
child.code not like concat(parent.code, '.%.%');
编辑:
要获取第一行,请使用left outer join
:
select child.id, parent.id, child.code, child.description
from t child left outer join
t parent
on child.code like concat(parent.code, '.%') and
child.code not like concat(parent.code, '.%.%');