作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以对 SQL 数据库中的行重新排序?例如;如何交换第二行和第三行值的顺序?
行的顺序对我来说很重要,因为我需要根据顺序显示值。
<小时/>谢谢大家的回答。但“排序依据”对我不起作用。
例如,我在数据库中放入了书签列表。我想根据查询得到的结果进行显示。 (不按字母顺序排列)。就在它们插入时。
但是用户可以重新排列书签的位置(以他/她想要的任何方式)。所以我不能使用“order by”。
一个例子是书签在firefox中的书签中如何显示。用户可以轻松切换位置。我如何在数据库中提及这一点?
谢谢。
最佳答案
听起来您需要另一列,例如“ListOrder”。所以你的表格可能看起来像:
BookMark ListOrder
======== =========
d 1
g 2
b 3
f 4
a 5
然后您可以“按”ListOrder 进行“排序”。
Select * from MyTable Order By ListOrder
如果用户一次只能将书签移动一个位置,则可以使用整数作为 ListOrder,并交换它们。例如,如果用户想要将“f”向上移动一行:
Update MyTable
Set ListOrder=ListOrder+1
Where ListOrder=(Select ListOrder-1 From MyTable where BookMark='f')
Update MyTable
Set ListOrder=ListOrder-1
Where BookMark='f'
如果用户可以一次将书签向上或向下移动许多行,那么您需要对段重新排序。例如,如果用户想要将“f”移动到列表顶部,则需要:
if (increment) {
update MyTable
Set ListOrder=ListOrder-1
where ListOrder<=1 -- The New position
and ListOrder >(Select ListOrder from MyTable where BookMark='f')
} else {
update MyTable
Set ListOrder=ListOrder+1
where ListOrder>=1 -- The New position
and ListOrder <(Select ListOrder from MyTable where BookMark='f')
}
update MyTable
Set ListOrder=1 -- The New Position
Where Bookmark='f'
关于sql - 如何对sql数据库中的行重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/812630/
我是一名优秀的程序员,十分优秀!