我需要能够让用户能够对他们的数据进行排序。我的架构是这样的:http ://sqlfiddle.com/#!2/48100
我想在此表中添加一个排序列。排序列应该是一个整数,对于每组 giverUserId,其值从 1 开始。但是,如果有重复的 giverUserId+receiverUserId 组合,它们必须保持相同的排序值。
因此,如果我有 A、B、C 和 D 行,其 giverUserId = 23 和 receiverUserId = 11、13、17 和 13,则每行的排序值应分别为 1、2、3、2 . 如果我插入一个新的 E 行,其中 giverUserId = 23 和 receiverUserId = 13,那么它的排序值也应该是 2。这样,我可以通过在排序列上进行排序来检索具有特定顺序的结果集:A、B、D、E、C。即使 D 和 E 都有更新的时间戳,由于排序,它在 C 之前柱子。
用户可以通过更新 giverUserId = x 和 receiverUserId = y 的所有行来修改行的排序值。我还将增加/减少因特定行的排序更改而错位的行。这部分我已经很清楚了。
我没有想到的是如何维护这样的排序列。我应该使用 auto_increment,还是有一些其他特殊的 MySQL 之类的东西可以帮助我完成我想要完成的事情?我需要弄清楚的是如何编写这样的 INSERT 语句,该语句将插入 sort = (sort column value where giverUserId=x AND receiverUserId=y) OR MAX(sort column where giverUserId=x)。
我在后端使用 JavaScript/Node.js 和 MySQL。