请教一条SQL语句

兔子-顾问 2017-09-26 08:21:08
...全文
215 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 版主 2017-09-27
  • 打赏
  • 举报
回复
引用 17 楼 wuyazhe 的回复:
[quote=引用 15 楼 sinat_28984567 的回复:] [quote=引用 14楼我是你的主体 的回复:]话说,好久不来,csdn怎么改了? 我发帖100分,结贴翻倍了,莫非你们都是移动端回复的,这代码用手机能发么。。。。
现在都是人工审核帖子,逍遥你这个帖子在电脑上打不开…因为管理员没上班…所以都得手机回帖…[/quote] 今天我的工程师跟我说,他用MySql,不知道是否可以改个mysql的写法呢?[/quote] 额,刚才看到你的帖子了……mysql不太熟悉,得研究一下……
兔子-顾问 2017-09-27
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/392269141
兔子-顾问 2017-09-27
  • 打赏
  • 举报
回复
引用 15 楼 sinat_28984567 的回复:
[quote=引用 14楼我是你的主体 的回复:]话说,好久不来,csdn怎么改了? 我发帖100分,结贴翻倍了,莫非你们都是移动端回复的,这代码用手机能发么。。。。
现在都是人工审核帖子,逍遥你这个帖子在电脑上打不开…因为管理员没上班…所以都得手机回帖…[/quote] 今天我的工程师跟我说,他用MySql,不知道是否可以改个mysql的写法呢?
兔子-顾问 2017-09-26
  • 打赏
  • 举报
回复
引用 15 楼 sinat_28984567 的回复:
[quote=引用 14楼我是你的主体 的回复:]话说,好久不来,csdn怎么改了? 我发帖100分,结贴翻倍了,莫非你们都是移动端回复的,这代码用手机能发么。。。。
现在都是人工审核帖子,逍遥你这个帖子在电脑上打不开…因为管理员没上班…所以都得手机回帖…[/quote] 多谢多谢,居然手机敲代码,感动。
二月十六 版主 2017-09-26
  • 打赏
  • 举报
回复
引用 14楼我是你的主体 的回复:
话说,好久不来,csdn怎么改了? 我发帖100分,结贴翻倍了,莫非你们都是移动端回复的,这代码用手机能发么。。。。
现在都是人工审核帖子,逍遥你这个帖子在电脑上打不开…因为管理员没上班…所以都得手机回帖…
二月十六 版主 2017-09-26
  • 打赏
  • 举报
回复
引用 7楼听雨停了 的回复:
看了半天没看懂啥意思?版主你咋理解他意思的啊
直接看代码吧,应该是这个意思
二月十六 版主 2017-09-26
  • 打赏
  • 举报
回复
如果这样,用递归查询可以实现:
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([id] int,[previous] int)
Insert #T
select 1,0 union all
select 2,1 union all
select 3,5 union all
select 4,2 union all
select 5,4 union all
select 6,3 union all
select 7,6
Go
--测试数据结束
;WITH cte AS (
SELECT * ,
1 AS ordernum
FROM #T
WHERE previous = 0
UNION ALL
SELECT #T.* ,
cte.ordernum + 1
FROM #T
JOIN cte ON cte.id = #T.previous
)
SELECT id ,
cte.previous
FROM cte
ORDER BY cte.ordernum;


兔子-顾问 2017-09-26
  • 打赏
  • 举报
回复
引用 7 楼 qq_37170555 的回复:
看了半天没看懂啥意思?版主你咋理解他意思的啊
数据库实现链表结构的排序功能。
兔子-顾问 2017-09-26
  • 打赏
  • 举报
回复
话说,好久不来,csdn怎么改了? 我发帖100分,结贴翻倍了,莫非你们都是移动端回复的,这代码用手机能发么。。。。
听雨停了 2017-09-26
  • 打赏
  • 举报
回复
看了半天没看懂啥意思?版主你咋理解他意思的啊
兔子-顾问 2017-09-26
  • 打赏
  • 举报
回复
引用 10 楼 sinat_28984567 的回复:
引用 7楼听雨停了 的回复:
看了半天没看懂啥意思?版主你咋理解他意思的啊
直接看代码吧,应该是这个意思
膜拜,太美了。
兔子-顾问 2017-09-26
  • 打赏
  • 举报
回复
引用 5 楼 sinat_28984567 的回复:
奥是想要1245367是吗?
对的,是这样的,希望1245367
二月十六 版主 2017-09-26
  • 打赏
  • 举报
回复
不是这样吗?那查询出来的结果应该是什么样的?
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([id] int,[previous] int)
Insert #T
select 1,0 union all
select 2,1 union all
select 3,5 union all
select 4,2 union all
select 5,4 union all
select 6,3 union all
select 7,6
Go
--测试数据结束
Select * from #T ORDER BY previous


兔子-顾问 2017-09-26
  • 打赏
  • 举报
回复
引用 2 楼 sinat_28984567 的回复:
SQL 版有个兔子党院长,不知道是不是你们一起的
是的,不过你回答的,似乎查询不对哦。
听雨停了 2017-09-26
  • 打赏
  • 举报
回复
引用 10 楼 二月十六的回复:
引用 7楼听雨停了 的回复:
看了半天没看懂啥意思?版主你咋理解他意思的啊
直接看代码吧,应该是这个意思
明白了,就是一棵树的结构,每个节点下只有一个节点这样一直下去,递归正好出来
二月十六 版主 2017-09-26
  • 打赏
  • 举报
回复
引用 6楼我是你的主体 的回复:
[quote=引用 5 楼 sinat_28984567 的回复:] 奥是想要1245367是吗?
对的,是这样的,希望1245367[/quote]这样其实只知道前边一个是谁就行,不用知道后边的是谁就能连起来
二月十六 版主 2017-09-26
  • 打赏
  • 举报
回复
奥是想要1245367是吗?
二月十六 版主 2017-09-26
  • 打赏
  • 举报
回复
SQL 版有个兔子党院长,不知道是不是你们一起的
二月十六 版主 2017-09-26
  • 打赏
  • 举报
回复
是问按新顺序查询吗?顺序调整需要SQL 处理吗?如果只是新顺序直接拍就行了。
SELECT  *
FROM 表
ORDER BY previous;

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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