【发布时间】:2011-06-16 18:25:52
【问题描述】:
例如,我有一个如下所示的表格:
id | 姓名
1 |迈克
2 |亚当
3 |约翰
4 |莎拉 ...
现在,当我执行查询 select * from table order by id desc 时,它会输出如下内容:
4 |莎拉
3 |约翰
2 |亚当
1 |迈克
现在,如果我想向上或向下移动 John 的行,或者向上或向下移动 Adam 的行(使用 MySQL 查询(我需要基本的查询,只是为了知道从哪里开始)),我该怎么办。
我的解决方案:
首先,我创建了另一个名为 orderID 的列,其值与 id 相同。
这是一个用户向上移动的示例:
$query = "
SELECT (
SELECT orderID
FROM test WHERE id = 'user id that i want to move up'
) AS user_order,
(
SELECT orderID
FROM test WHERE orderID > user_order
ORDER BY orderID
LIMIT 0,1
) AS nextUser_order
";
$result = mysql_query($query);
$data = mysql_fetch_assoc($result);
$query = "
UPDATE test SET orderID = IF(orderID='{$data[nextUser_order]}',
'{$data[user_order]}', '{$data[nextUser_order]}')
WHERE orderID IN ('{$data[nextUser_order]}', '{$data[user_order]}');
";
$result = mysql_query($query);
有没有更好的方法来做到这一点?
【问题讨论】:
-
我认为问题是,你为什么要让约翰上位或亚当下位?是否需要在数据库中做出该决定的信息?如果按那个排序