SQL怎么将查询排序后的数据更新到原本的表中

例如。我创了A表,里面某个字段是不安顺序排列的,selsct只能查询到A表排序后是怎么样的,怎么把已经排序好的这个直接更新到A表,就是我下次打开A表,它就安顺序了

第1个回答  2013-11-29
好麻烦哦.
直接修改表,将指定列 选定排序规则即可追问

表里有几千条数据,一个个修改不现实

追答

呵呵,别说几千条,就算是上百万条也没关系,因为,这个不是修改 数据,而是 修改表的属性(排序规则),修改完之后
select * from 你的表 ,
自动按照 你 所需要的列 排序了

追问

我那个顺序不是常规顺序啊,第二列的数字分两个部分一部分是从100-500的,第二部分从800-1000,先将800-1000部分按顺序排列,1000之后再是100-500排下去,

第2个回答  2013-11-29
在性能上:这样做完全没必要,也没有作用,因为你只是需要查询的结果而已
实现:完全是没必要的(你可以说出你这样做的原因吗?)追问

4列的表都是int类型,第一列,现在是空的,这个是要排好序后从200开始递增到结束的列,第二列的数字分两个部分一部分是从100-500的,第二部分从800-1000,先将800-1000部分按顺序排列,1000之后再是100-500排下去,第三列也是打乱的一些字符,第二列的那个顺序是优先的,之后第三列也要按顺序排序。这么长的代码不会写就向着一点点修改过来然后拼拼凑凑就能达到这个要求了

追答

如果你这样子的话
1、可以直接直接按照你所需要的要求一部分一部分查出来最后总合(利用Unionall)按排序要求查出所有的数据,复制到一个新表(新表多一个 自动编号的ID列 列开始200,种子递增 1)
2、把旧表数据删掉,复制新表数据进入旧表
这样就上可以实现你的要求

追问

非常感谢,还有个问题想请教下大神,就是上面有个列的数字是4100,它的实际顺序是跟在499后面的,就是498,,499,4100,4101。。这么下来的我该怎么实现这个排序啊

追答

你可以把500为其中一个拆分点
1、 500前面作为一个查询 :条件为 ?<列<500
2、500后也作为一个查询:条件为 4100<=列<=?

第一步和第二步Union All起来 就可以解决那个问题,其他的也是类似解决

本回答被提问者采纳
第3个回答  2013-11-29
赞同建视图的解决办法。
相似回答