Sql server 排序SQL表
有人能帮我用T-SQL对这个表进行排序吗Sql server 排序SQL表,sql-server,tsql,sorting,Sql Server,Tsql,Sorting,有人能帮我用T-SQL对这个表进行排序吗 ID Comment ParentId -- ------- -------- 3 t1 NULL 4 t2 NULL 5 t1_1 3 6 t2_1 4 7 t1_1_1 5 像这样 ID Comment ParentId -- ------- -------- 3 t1 NULL 5 t1_1 3 7 t1_1_1 5 4 t2
ID Comment ParentId
-- ------- --------
3 t1 NULL
4 t2 NULL
5 t1_1 3
6 t2_1 4
7 t1_1_1 5
像这样
ID Comment ParentId
-- ------- --------
3 t1 NULL
5 t1_1 3
7 t1_1_1 5
4 t2 NULL
6 t2_1 4
亲切问候,
Lennart试试这个:
DECLARE @YourTable table (id int, Comment varchar(10), parentID int)
INSERT INTO @YourTable VALUES (3, 't1' , NULL)
INSERT INTO @YourTable VALUES (4, 't2' , NULL)
INSERT INTO @YourTable VALUES (5, 't1_1' , 3)
INSERT INTO @YourTable VALUES (6, 't2_1' , 4)
INSERT INTO @YourTable VALUES (7, 't1_1_1', 5)
;with c as
(
SELECT id, comment, parentid, CONVERT(varchar(8000),RIGHT('0000000000'+CONVERT(varchar(10),id),10)) as SortBy
from @YourTable
where parentID IS NULL
UNION ALL
SELECT y.id, y.comment, y.parentid, LEFT(c.SortBy+CONVERT(varchar(8000),RIGHT('0000000000'+CONVERT(varchar(10),y.id),10)),8000) AS SortBy
FROM c
INNER JOIN @YourTable y ON c.ID=y.PArentID
)
select * from C ORDER BY SortBy
编辑这是输出
id comment parentid SortBy
----------- ---------- ----------- ---------------------------------
3 t1 NULL 0000000003
5 t1_1 3 00000000030000000005
7 t1_1_1 5 000000000300000000050000000007
4 t2 NULL 0000000004
6 t2_1 4 00000000040000000006
(5 row(s) affected)
试试这个:
DECLARE @YourTable table (id int, Comment varchar(10), parentID int)
INSERT INTO @YourTable VALUES (3, 't1' , NULL)
INSERT INTO @YourTable VALUES (4, 't2' , NULL)
INSERT INTO @YourTable VALUES (5, 't1_1' , 3)
INSERT INTO @YourTable VALUES (6, 't2_1' , 4)
INSERT INTO @YourTable VALUES (7, 't1_1_1', 5)
;with c as
(
SELECT id, comment, parentid, CONVERT(varchar(8000),RIGHT('0000000000'+CONVERT(varchar(10),id),10)) as SortBy
from @YourTable
where parentID IS NULL
UNION ALL
SELECT y.id, y.comment, y.parentid, LEFT(c.SortBy+CONVERT(varchar(8000),RIGHT('0000000000'+CONVERT(varchar(10),y.id),10)),8000) AS SortBy
FROM c
INNER JOIN @YourTable y ON c.ID=y.PArentID
)
select * from C ORDER BY SortBy
编辑这是输出
id comment parentid SortBy
----------- ---------- ----------- ---------------------------------
3 t1 NULL 0000000003
5 t1_1 3 00000000030000000005
7 t1_1_1 5 000000000300000000050000000007
4 t2 NULL 0000000004
6 t2_1 4 00000000040000000006
(5 row(s) affected)
哼哼点菜
哼唱订购人
这听起来很像一个家庭作业问题,但这里有一些关于如何解决这个问题的提示: 您需要在google或StackOverflow上快速搜索ORDERBY子句,以便能够获得一组按您要使用的列(即“注释”列)排序的结果。 一旦得到了这些,就可以开始编写SQL语句来对结果进行排序
如果需要对实际表重新排序(而不仅仅是按特定顺序获取结果),则需要使用临时表进行查找(尝试搜索“DECLARE table”)。与任何临时交换非常相似,您可以将结果放在临时位置,删除旧数据,然后用临时数据替换表内容,但这一次是按照您想要的顺序进行的。这听起来很像一个家庭作业问题,但这里有一些关于如何处理的提示: 您需要在google或StackOverflow上快速搜索ORDERBY子句,以便能够获得一组按您要使用的列(即“注释”列)排序的结果。 一旦得到了这些,就可以开始编写SQL语句来对结果进行排序
如果需要对实际表重新排序(而不仅仅是按特定顺序获取结果),则需要使用临时表进行查找(尝试搜索“DECLARE table”)。与任何临时交换非常相似,您可以将结果放在临时位置,删除旧数据,然后用临时数据替换表内容,但这一次是按您想要的顺序进行的。但仅按注释排序就可以了?还是我没抓住重点
declare @table table
(
Comment varchar(10)
)
insert into @table (Comment) values ('t1')
insert into @table (Comment) values ('t2')
insert into @table (Comment) values ('t1_1')
insert into @table (Comment) values ('t2_1')
insert into @table (Comment) values ('t1_1_1')
select * from @table order by comment
但仅仅是按评论排序就可以得到这样的结果吗?还是我没抓住重点
declare @table table
(
Comment varchar(10)
)
insert into @table (Comment) values ('t1')
insert into @table (Comment) values ('t2')
insert into @table (Comment) values ('t1_1')
insert into @table (Comment) values ('t2_1')
insert into @table (Comment) values ('t1_1_1')
select * from @table order by comment
我认为OP想要的结果是用ID和ParentID排序的,其中一个简单的ORDER BY不起作用我认为OP想要的结果是用ID和ParentID排序的,其中一个简单的ORDER BY不起作用为什么否决票?一个简单的排序依据将不起作用,除非您的注释栏总是被输入,以便您可以使用它进行排序,这是不可能的。我认为OP想要使用ID和ParentID,并以此进行排序。我提供了完整的工作示例代码,OP说“谢谢,它工作了”,我仍然得到了两张反对票,没有任何理由说明原因。谢谢为什么要投反对票?一个简单的排序依据将不起作用,除非您的注释栏总是被输入,以便您可以使用它进行排序,这是不可能的。我认为OP想要使用ID和ParentID,并以此进行排序。我提供了完整的工作示例代码,OP说“谢谢,它工作了”,我仍然得到了两张反对票,没有任何理由说明原因。谢谢我认为OP在其示例数据中为注释列选择了值,以表示他们试图按ID和父ID排序。我怀疑他们是否真的在“按注释排序”解决方案。我认为OP在其示例数据中为注释列选择了值,以表示他们试图按ID和父ID进行排序。我怀疑他们是否真的需要“按注释排序”解决方案。