• 全部
  • 问答

纯SQL,能搞定这个问题吗?记录重新整理

bineon 2007-02-07 11:47:10
id start end priority
10 22 44 100
13 33 38 90
15 100 900 900
17 200 300 200
18 1000 1100 202
-----------------------------------
类似数据;
如果数据A的优先级(priority)大于B的优先级:
如果A.start <= B.start && A.end > B.end,则删除记录B(也就是A的区间包含B的区间)
如果A的区间和B的区间部分重叠:A.start <= B.start < A.end <- B.end,则保留A区间,B区间变成A.end+1,B.end
如果A的区间和B的区间部分重叠情况二:B.start < A.start <=B.end < A.end,则A区间保持不变,B区间变成B.start, A.end-1
如果B的区间包含A的区间,即 B.start < a.start <a.end <b.end
则B区间删除,添加两个新区间:B.start,A.start-1 和 a.end+1,b.end,A区间保持不变。

能用sql语句搞定吗?
...全文
187 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
mschen 2007-02-07
数据A和数据B分别是什么?
回复
lchzh 2007-02-07
这肯定是可以搞定的

回复
bineon 2007-02-07
A和B分别代表一行记录啊
比如A为ID为10的记录。优先级为100,开始为22,结束为44.
回复
发帖
MySQL
创建于2007-09-28

5.4w+

社区成员

MySQL相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2007-02-07 11:47
社区公告
暂无公告