【发布时间】:2015-04-19 18:11:24
【问题描述】:
也许它是重复的或 / 并且可能解决方案非常简单,但我找不到任何答案或更好的说法来写下正确的搜索查询。
假设我有下表
----------------------
| parent | child | pos |
----------------------
| 0 | 1 | 0 |
| 0 | 5 | 1 |
| 0 | 3 | 5 |
| 1 | 8 | 0 |
| 1 | 9 | 0 |
| 1 | 7 | 0 |
| 2 | 8 | 3 |
| 2 | 9 | 4 |
----------------------
如您所见,pos 行有点损坏。例如,对于父 0 及其子,pos 值为 0,1,5 而不是 0,1,2。对于父 1 及其子,它们也是 0,0,0 而不是 0,1,2
child 和 pos 背后绝对没有逻辑。我只是将它们随机化以表明 pos 不依赖于孩子,但孩子的顺序由其 pos 值定义。如果之前有订单,应该是一样的。
现在的问题是:是否可以使用更新 sql 语句“修复”这个 pos 行,即 pos 将是完整的并且始终从 0 开始?
我正在为 oracle、mysql 和 ms sql server 寻找一种或多种解决方案。这是因为我们正在与他们三个一起工作。
这就是希望的结果应该是这样的
----------------------
| parent | child | pos |
----------------------
| 0 | 1 | 0 |
| 0 | 5 | 1 |
| 0 | 3 | 2 |
| 1 | 8 | 0 |
| 1 | 9 | 1 |
| 1 | 7 | 2 |
| 2 | 8 | 0 |
| 2 | 9 | 1 |
----------------------
提前谢谢你。
附言。 A.D. for mysql的解决方案对我有用
【问题讨论】:
-
您想要哪个数据库的答案?为什么不喜欢 DB2、Sybase、SQLite、Postgres 或 mSQL?最好只选一个。
-
请用您正在使用的正确数据库标记您的问题。为什么需要在三个截然不同的数据库中解决这个问题?
-
最好将问题缩小到单个数据库并为数据库添加一个 sqlfiddle 以及到目前为止您尝试过的内容。
-
恕我直言,对我来说,您的“pos 行是如何损坏的”并不明显。您能否更具体地说明它们应该如何填写?
-
pos值和child值背后的逻辑是什么,我们了解parent and pos之间的关系逻辑,但是child呢?I mean which child should be 0, 1 or 2!?还是没关系!?
标签: mysql sql sql-server oracle