例如,我有一个表,看起来像这样:PHP的MySQL排序行
ID | 名称
1 | Mike
2 | Adam
3 | John
4 |萨拉 ...
现在,当我执行查询select * from table order by id desc
它将输出是这样的:
4 | Sarah
3 | John
2 |亚当
1 | Mike
现在,如果我想要将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);
有没有更好的方式来做到这一点?
我想问的是,你为什么要约翰被抬起来或亚当下降?是否需要在数据库中做出该决定的信息?如果这是排序 – ben 2011-06-16 18:43:07