楼主: jrtongxin5266

[SQL] 求一类似微信朋友圈的sql

[复制链接]
论坛徽章:
2
乌索普
日期:2016-11-28 11:16:45秀才
日期:2016-12-21 16:55:07
11#
 楼主| 发表于 2016-11-28 14:02 | 只看该作者

大佬,我找到我的问题了,我的所有的pid都是一个,我给的语句跟数据却不是...

使用道具 举报

回复
论坛徽章:
2
乌索普
日期:2016-11-28 11:16:45秀才
日期:2016-12-21 16:55:07
12#
 楼主| 发表于 2016-11-28 14:10 | 只看该作者

大佬,我之前的给的insert语句的数据是有问题的,实际的数据pid都是一个
insert into wxtable values(1,'a','a1',0,to_date('2016-11-28 9:13:01','yyyy-mm-dd hh:mi:ss'))
insert into wxtable values(2,'','a2',1,to_date('2016-11-28 9:13:02','yyyy-mm-dd hh:mi:ss'))
insert into wxtable values(3,'','a3',1,to_date('2016-11-28 9:13:03','yyyy-mm-dd hh:mi:ss'))
insert into wxtable values(4,'b','b1',0,to_date('2016-11-28 9:13:04','yyyy-mm-dd hh:mi:ss'))
insert into wxtable values(5,'','b2',4,to_date('2016-11-28 9:13:05','yyyy-mm-dd hh:mi:ss'))
insert into wxtable values(6,'','b3',4,to_date('2016-11-28 9:13:06','yyyy-mm-dd hh:mi:ss'))

使用道具 举报

回复
论坛徽章:
126
ITPUB元老
日期:2007-07-04 17:27:50会员2007贡献徽章
日期:2007-09-26 18:42:10现任管理团队成员
日期:2011-05-07 01:45:08优秀写手
日期:2015-01-09 06:00:14版主7段
日期:2015-07-16 02:10:00
13#
发表于 2016-11-28 14:37 | 只看该作者
jrtongxin5266 发表于 2016-11-28 14:10
大佬,我之前的给的insert语句的数据是有问题的,实际的数据pid都是一个
insert into wxtable values(1, ...

你要详细说明一下你要的结果排序的详细规则

使用道具 举报

回复
论坛徽章:
2
乌索普
日期:2016-11-28 11:16:45秀才
日期:2016-12-21 16:55:07
14#
 楼主| 发表于 2016-11-28 14:54 | 只看该作者
本帖最后由 jrtongxin5266 于 2016-11-28 15:00 编辑
bell6248 发表于 2016-11-28 14:37
你要详细说明一下你要的结果排序的详细规则

大佬,实在抱歉,之前的数据我弄错了。数据是下面的insert语句里就有了,麻烦再重新执行下
insert into wxtable values(1,'a','a1',0,to_date('2016-11-28 9:13:01','yyyy-mm-dd hh:mi:ss'))
insert into wxtable values(2,'','a2',1,to_date('2016-11-28 9:13:02','yyyy-mm-dd hh:mi:ss'))
insert into wxtable values(3,'','a3',1,to_date('2016-11-28 9:13:03','yyyy-mm-dd hh:mi:ss'))
insert into wxtable values(4,'b','b1',0,to_date('2016-11-28 9:13:04','yyyy-mm-dd hh:mi:ss'))
insert into wxtable values(5,'','b2',4,to_date('2016-11-28 9:13:05','yyyy-mm-dd hh:mi:ss'))
insert into wxtable values(6,'','b3',4,to_date('2016-11-28 9:13:06','yyyy-mm-dd hh:mi:ss'))
结果是这样的:
4           b        b1                 0          2016/11/28 9:13:04
5                     b2                 4          2016/11/28 9:13:05
6                     b3                 4          2016/11/28 9:13:06
1         a          a1                 0          2016/11/28 9:13:01        
2                     a2                 1          2016/11/28 9:13:02
3                     a3                 1          2016/11/28 9:13:03就是微信朋友圈的效果,我写的朋友圈就是pid=0的记录,pid为该条记录的id记录为回复内容,也就是朋友圈是按时间倒序,具体的回复是按时间正序。

使用道具 举报

回复
论坛徽章:
126
ITPUB元老
日期:2007-07-04 17:27:50会员2007贡献徽章
日期:2007-09-26 18:42:10现任管理团队成员
日期:2011-05-07 01:45:08优秀写手
日期:2015-01-09 06:00:14版主7段
日期:2015-07-16 02:10:00
15#
发表于 2016-11-28 15:09 | 只看该作者
jrtongxin5266 发表于 2016-11-28 14:54
大佬,实在抱歉,之前的数据我弄错了。数据是下面的insert语句里就有了,麻烦再重新执行下
insert into  ...




明白了, 你再测试一下如果有问题, 详细说明

代码如下:

SQL> select  id,
  2          title,
  3          message,
  4          pid,
  5          to_char(datetime, 'yyyy-mm-dd hh24:mi:ss') datetime
  6    from  wxtable
  7  /

        ID TITLE    MESSAGE         PID DATETIME
---------- -------- -------- ---------- -------------------
         1 a        a1                0 2016-11-28 09:13:01
         2          a2                1 2016-11-28 09:13:02
         3          a3                1 2016-11-28 09:13:03
         4 b        b1                0 2016-11-28 09:13:04
         5          b2                4 2016-11-28 09:13:05
         6          b3                4 2016-11-28 09:13:06

6 rows selected

SQL>
SQL> select  id,
  2          title,
  3          message,
  4          pid,
  5          to_char(datetime, 'yyyy-mm-dd hh24:mi:ss') datetime
  6  from
  7  (select id,
  8          title,
  9          message,
10          pid,
11          datetime,
12          connect_by_root(id) flag
13    from wxtable
14    start with pid = 0
15    connect by prior id = pid)
16  order by max(decode(pid, 0, datetime, null)) over(partition by flag) desc, row_number() over(partition by flag order by decode(pid, 0, null, datetime) nulls first);

        ID TITLE    MESSAGE         PID DATETIME
---------- -------- -------- ---------- -------------------
         4 b        b1                0 2016-11-28 09:13:04
         5          b2                4 2016-11-28 09:13:05
         6          b3                4 2016-11-28 09:13:06
         1 a        a1                0 2016-11-28 09:13:01
         2          a2                1 2016-11-28 09:13:02
         3          a3                1 2016-11-28 09:13:03

6 rows selected

SQL>



使用道具 举报

回复
论坛徽章:
2
乌索普
日期:2016-11-28 11:16:45秀才
日期:2016-12-21 16:55:07
16#
 楼主| 发表于 2016-11-28 15:32 | 只看该作者
bell6248 发表于 2016-11-28 15:09
明白了, 你再测试一下如果有问题, 详细说明

代码如下:

非常感谢大佬的帮助,我正在消化这个sql...

使用道具 举报

回复
论坛徽章:
2
乌索普
日期:2016-11-28 11:16:45秀才
日期:2016-12-21 16:55:07
17#
 楼主| 发表于 2016-11-28 17:22 | 只看该作者
本帖最后由 jrtongxin5266 于 2016-11-28 17:32 编辑
bell6248 发表于 2016-11-28 15:09
明白了, 你再测试一下如果有问题, 详细说明

代码如下:

963        2016/3/23 15:33:10        宝宝,家长来私信,好好加油        0
969        2016/3/23 15:45:46        第三层回复上再次回复        963
968        2016/3/23 15:41:24        有问题可以在这上面交谈        963
967        2016/3/23 15:40:39        可以恢复很多很多        963
966        2016/3/23 15:40:22        disanceng第三层恢复回复        963
964        2016/3/23 15:36:22        我会加油的        963
970        2016/3/23 15:46:05        以恢复很多很多        963
1003        2016/6/17 10:17:05        哈哈哈哈        0
1007        2016/6/17 10:20:46        yyyy        1003
1008        2016/6/17 10:20:52        yyy        1003
1009        2016/6/17 10:21:17        aaa        1003
1010        2016/6/17 10:21:34        sadasda        1003
1011        2016/6/17 10:21:58        adasda        1003
1012        2016/6/17 10:22:13        tttttttttt        1003
1006        2016/6/17 10:20:36        aaaa        1003
1005        2016/6/17 10:20:24        一样一样        1003
1004        2016/6/17 10:17:18        hehehe        1003
1013        2016/6/17 10:22:29        qqqqqqqqqq        1003
1015        2016/6/17 10:22:52        eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee        1003
1014        2016/6/17 10:22:38        wwwwwwwwwww        10031025        2016/6/21 15:05:28        你瞅啥        0        29138
1032        2016/6/21 15:11:41        约        1025        29138
1028        2016/6/21 15:07:06        1111        1025        62113
1027        2016/6/21 15:06:15        不服晚上约下子        1025        62113
1026        2016/6/21 15:06:02        瞅你咋的        1025        62113
1034        2016/6/21 15:13:26        弹        1025        29138
1043        2016/6/21 15:20:10        ,        1025        29138
1042        2016/6/21 15:19:50        ,        1025        62113
1041        2016/6/21 15:19:10        ,        1025        29138
1040        2016/6/21 15:19:00        ,        1025        62113
1039        2016/6/21 15:18:53        ,        1025        62113
1038        2016/6/21 15:18:45        ,        1025        62113
1037        2016/6/21 15:14:44        逗比        1025        29138
1036        2016/6/21 15:14:21        真尼玛逗比        1025        62113
1035        2016/6/21 15:13:39        真是醉了        1025        29138

大佬,还是有这种时间乱的...我看是时间排在后面,但是id在前面,这种情况肯定会有。



使用道具 举报

回复
论坛徽章:
126
ITPUB元老
日期:2007-07-04 17:27:50会员2007贡献徽章
日期:2007-09-26 18:42:10现任管理团队成员
日期:2011-05-07 01:45:08优秀写手
日期:2015-01-09 06:00:14版主7段
日期:2015-07-16 02:10:00
18#
发表于 2016-11-28 17:37 | 只看该作者
jrtongxin5266 发表于 2016-11-28 17:22
963        2016/3/23 15:33:10        宝宝,家长来私信,好好加油        0
969        2016/3/23 15: ...

用简单的数据举例, 包含所有可能的特殊情况, 另外你自己可以分析一下, 代码已经给了, 自己要变通一下

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
19#
发表于 2016-11-29 00:39 | 只看该作者
jrtongxin5266 发表于 2016-11-28 17:22
963        2016/3/23 15:33:10        宝宝,家长来私信,好好加油        0
969        2016/3/23 15: ...

如果结果有问题,给出能够重现这个问题的CREATE TABLE/INSERT 脚本,并且注明具体哪些行出现了问题,正确结果又应该是怎样。

使用道具 举报

回复
论坛徽章:
2
乌索普
日期:2016-11-28 11:16:45秀才
日期:2016-12-21 16:55:07
20#
 楼主| 发表于 2016-11-29 08:34 | 只看该作者
bell6248 发表于 2016-11-28 17:37
用简单的数据举例, 包含所有可能的特殊情况, 另外你自己可以分析一下, 代码已经给了, 自己要变通一下

好的,谢谢大佬,我先研究下

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表