当前位置:首页 » 编程语言 » sql排序树
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql排序树

发布时间: 2022-06-04 05:38:52

sql 模糊查询按匹配度排序的原理

SELECT`id`,`text`,(CASEWHENtextLIKE'%dell%'ANDtextLIKE'%poweredge%'THEN2ELSE1END)aslevelsFROM`t_name`ORDERBYlevelsdesc

⑵ 我用sql语句查询出树形栏目列表,但我想排一下顺序,请大哥大姐帮帮忙!

select name from table
group by (case when level=1 then 大类 ,
when level =2 then 中类 ,
else 小类 end) 类别
order by 类别

⑶ 在MySql下,怎么用SQL语句遍历一个树结构

f exists (select * from dbo.sysobjects where id = object_id(N'[tb]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [tb]
GO

--示例数据
create table [tb]([id] int identity(1,1),[pid] int,name varchar(20))
insert [tb] select 0,'中国'
union all select 0,'美国'
union all select 0,'加拿大'
union all select 1,'北京'
union all select 1,'上海'
union all select 1,'江苏'
union all select 6,'苏州'
union all select 7,'常熟'
union all select 6,'南京'
union all select 6,'无锡'
union all select 2,'纽约'
union all select 2,'旧金山'
go

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_id]') and xtype in (N'FN', N'IF', N'TF'))

drop function [dbo].[f_id]
GO

/*--树形数据处理

级别及排序字段

--邹建 2003-12(引用请保留此信息)--*/

/*--调用示例

--调用函数实现分级显示

select replicate('-',b.[level]*4)+a.name

from [tb] a,f_id()b

where a.[id]=b.[id]

order by b.sid
--*/
create function f_id()
returns @re table([id] int,[level] int,sid varchar(8000))
as
begin

declare @l int

set @l=0

insert @re select [id],@l,right(10000+[id],4)

from [tb] where [pid]=0

while @@rowcount>0

begin

set @l=@l+1

insert @re select a.[id],@l,b.sid+right(10000+a.[id],4)

from [tb] a,@re b

where a.[pid]=b.[id] and b.[level]=@l-1

end

return
end
go

--调用函数实现分级显示
select replicate('-',b.[level]*4)+a.name
from [tb] a,f_id()b
where a.[id]=b.[id]
order by b.sid
go

--删除测试
drop table [tb]
drop function f_id
go

/*--结果
中国
----北京
----上海
----江苏
--------苏州
------------常熟
--------南京
--------无锡
美国
----纽约
----旧金山
加拿大

--*/

⑷ sqlserver2008树查询,急急急,求大神教育

你想要达到的预期效果是什么?

⑸ sql里树形结构分组排序

createtableT1(thisvarchar(10),parentvarchar(10))
insertintoT1(this,parent)
values('id1',null)
,('id2',null)
,('id3','id1')
,('id4','id2')
,('id5','id3')
,('id6','id3')
,('id7','id4')
,('id8','id7')

--sqlserver的cte功能
withtree(this,parent,root,depth)as(
selectthis,parent,thisasroot,
unionall
selecta.this,a.parent,b.root,b.depth+1asdepthfromT1a,treebwherea.parent=b.this
)
selectthis,parent,root,depth
fromtree
orderbyroot,depth,this

⑹ SQL聚集索引:“原来的数据会按照索引键排序后,重新存在硬盘上”什么意思

聚集索引: 该索引中键值的逻辑顺序决定了表中相应行的物理顺序。如果用 新华字典 作例子来一个例子的话。 [拼音]就可以看作是聚集索引 例如 吖、阿、啊 在字典的最前面。 左、作、坐 在字典的最后面。 拼音[逻辑顺序]很接近,在字典中页数的位置[物理顺序]也很接近。

非聚集索引: 非聚集索引与聚集索引一样有 B 树结构,但是有两个重大差别: 数据行不按非聚集索引键的顺序排序和存储。 非聚集索引的叶层不包含数据页。 相反,叶节点包含索引行。每个索引行包含非聚集键值以及一个或多个行定位器, 这些行定位器指向有该键值的数据行(如果索引不唯一,则可能是多行)。如果用 新华字典 作例子来一个例子的话。 [笔画]就可以看作是非聚集索引 例如 化 仇 仃 仅 仂 这几个字,都是 单人旁,笔画数相同的。 笔画[逻辑顺序]很接近,在字典中页数的位置[物理顺序]则在不同的位置上。

⑺ SqlServer树形结构的深度排序怎么实现

/*
转一个邹老大的例子
*/

--测试数据
DECLARE @t TABLE(ID char(3),PID char(3),Name nvarchar(10))
INSERT @t SELECT '001',NULL ,'山东省'
UNION ALL SELECT '002','001','烟台市'
UNION ALL SELECT '003','001','青岛市'
UNION ALL SELECT '004','002','招远市'
UNION ALL SELECT '005',NULL ,'四会市'
UNION ALL SELECT '006','005','清远市'
UNION ALL SELECT '007','006','小分市'

--深度排序显示处理
--生成每个节点的编码累计(相同当单编号法的编码)
DECLARE @t_Level TABLE(ID char(3),Level int,Sort varchar(8000))
DECLARE @Level int
SET @Level=0
INSERT @t_Level SELECT ID,@Level,ID
FROM @t
WHERE PID IS NULL
WHILE @@ROWCOUNT>0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.ID,@Level,b.Sort+a.ID
FROM @t a,@t_Level b
WHERE a.PID=b.ID
AND b.Level=@Level-1
END

--显示结果
SELECT a.*
FROM @t a,@t_Level b
WHERE a.ID=b.ID
ORDER BY b.Sort
/*--结果

⑻ 谁能用sql语句(2008)帮我实现这种查找排序,关于产品BOM单的

查询出来的结果应该是:
层次 内部序号 编号
1 1 1
2 1 1.1
3 1 1.1.1
4 1 1.1.1.1
2 2 1.2
1 1 2 //你应该写错了,内部序号应该是2
2 1 2.1
3 1 2.1.1
3 2 2.1.1 //你应该写错了,编号应该是2.1.2
1 1 3 //你应该写错了,内部序号应该是3
2 1 3.1

从上面的规律看来
1、整个结果的排序是按“编号”来排列的
2、层次:“编号”的小数点个数+1,也就是child_item的小数点个数加1,你自己想个办法吧,这个在保存proct_bom 表时记录到表中就更好了

网络到个好办法:
len(child_item) - len( replace(child_item, '.' , '') ) + 1
3、内部序号:“编号”的最后一位,当然你也可以用parent_item 来截取child_item

select len(child_item) - len( replace(child_item, '.' , '') ) + 1
,right(child_item,1) 内部序号, child_item
from proct_bom
order by child_item

⑼ sql 树型结构查询

假如 Code 字段 为 字符类型 则 select * from tb order by code即可如果 Code字段 为 整型 则select Cast(Code as varchar) as Code,[Name] from tb order by code