纯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语句搞定吗?
...全文
231 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mschen 2007-02-07
  • 打赏
  • 举报
回复
数据A和数据B分别是什么?
Coder1035 2007-02-07
  • 打赏
  • 举报
回复
这肯定是可以搞定的

bineon 2007-02-07
  • 打赏
  • 举报
回复
A和B分别代表一行记录啊
比如A为ID为10的记录。优先级为100,开始为22,结束为44.

56,675

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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