用一个SQL语句不知道能否实现这个功能?

yifanwu 2010-06-26 04:21:56
一个表:
id parent_id value
1 0 0
2 0 0
3 1 1
4 2 1
5 1 2

要求输出:

id
1
5
3
2
4

就是先输出ID,再输出按value排序的parent_id=id的行。


谢谢。
...全文
129 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
永生天地 2010-06-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yifanwu 的回复:]
谢谢Sharon_liu的方法,但是有不用太复杂的办法么?

因为希望能在各种数据库平台上都能实现。
[/Quote]

如果数据库支持写函数,看看这个函数的做法
http://blog.csdn.net/xys_777/archive/2010/06/15/5672481.aspx
304的的哥 2010-06-26
  • 打赏
  • 举报
回复
学习了!
jianuMan 2010-06-26
  • 打赏
  • 举报
回复
看不懂规律

楼主说清楚点
htl258_Tony 2010-06-26
  • 打赏
  • 举报
回复
--> 生成测试数据表: [tb]
IF OBJECT_ID('[tb]') IS NOT NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb] ([id] [int],[parent_id] [int],[value] [int])
INSERT INTO [tb]
SELECT '1','0','0' UNION ALL
SELECT '2','0','0' UNION ALL
SELECT '3','1','1' UNION ALL
SELECT '4','2','1' UNION ALL
SELECT '5','1','2'

--SELECT * FROM [tb]

-->SQL查询如下:
;WITH t AS
(
SELECT *, px = CAST(ROW_NUMBER()OVER(ORDER BY VALUE DESC) AS VARBINARY)
FROM tb
WHERE parent_id = 0
UNION ALL
SELECT a.*, CAST(
px+CAST(
ROW_NUMBER()OVER(PARTITION BY a.parent_id ORDER BY a.VALUE DESC) AS VARBINARY
) AS VARBINARY
)
FROM tb a, t b
WHERE a.parent_id = b.id
)
SELECT id
FROM t
ORDER BY px
/*
id
-----------
1
5
3
2
4

(5 行受影响)
*/
yifanwu 2010-06-26
  • 打赏
  • 举报
回复
谢谢Sharon_liu的方法,但是有不用太复杂的办法么?

因为希望能在各种数据库平台上都能实现。
Sharon_liu 2010-06-26
  • 打赏
  • 举报
回复
IF OBJECT_ID('TB') IS NOT NULL DROP TABLE TB
GO
CREATE TABLE TB(id INT, parent_id INT, value INT)
INSERT INTO TB
SELECT 1, 0, 0 UNION ALL
SELECT 2, 0, 0 UNION ALL
SELECT 3, 1, 1 UNION ALL
SELECT 4, 2, 1 UNION ALL
SELECT 5, 1, 2
;WITH MU AS (
SELECT 'LEVEL'=1,NID=ID,* FROM TB WHERE parent_id=0
UNION ALL
SELECT [LEVEL]+1,NID,TB.*
FROM TB
INNER JOIN MU ON TB.parent_id =MU.id
)
SELECT ID FROM MU
ORDER BY NID,LEVEL ASC,value DESC
/*
1
5
3
2
4
*/
jaydom 2010-06-26
  • 打赏
  • 举报
回复
看不懂规律,只能帮顶了
内容概要:本文详细介绍了一个基于C++语言开发的疫苗接种和儿童体检系统的设计与实现全过程,涵盖项目背景、目标意义、架构设计、核心功能模块、数据库实现、API接口规范、前后端代码实现及部署应用等多个方面。系统采用分层架构与模块化设计,实现了儿童信息管理、疫苗接种记录、体检数据录入、多用户权限控制、数据统计分析、异常预警、安全加密与日志审计等核心功能,并通过MySQL数据库进行数据持久化,结合Qt实现图形化界面,支持高并发、数据脱敏、多平台对接与自动化部署。项目强调数据安全、隐私保护与系统可扩展性,适用于社区医疗、疾控中心、学校及医院等场景。; 适合人群:具备C++编程基础,熟悉数据库操作和基本软件工程流程的开发人员、计算机及相关专业学生、医疗信息化项目开发者,以及希望了解完整医疗管理系统开发流程的技术人员。; 使用场景及目标:①学习如何使用C++构建完整的医疗信息管理系统;②掌握数据库设计、前后端交互、权限控制、多线程处理和GUI开发等关键技术;③应用于社区卫生服务、学校健康管理、疾控数据统计等实际业务场景,提升儿童健康管理水平;④作为课程设计、毕业设计或实际项目的参考模板。; 阅读建议:建议读者结合文档中的代码示例与数据库脚本,搭建本地开发环境进行实践操作,重点关注系统架构设计、模块解耦、安全机制与前后端交互逻辑,深入理解各功能模块的实现原理,并尝试在此基础上进行功能扩展,如接入移动端或增加AI分析模块。

22,299

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧