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

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

你这个是没有意义的,数据在表里都是无序的,默认的输出排序是按你的主键的。
你可以select * from A order by 你要排序的字段; (从小到大)
select * from A order by 你要排序的字段 desc; (从大到小)
如果你不想每次都输入order by 的话可以建视图
create view 视图名称 as select * from A order by 你要排序的字段;
下次你只要 select * from 视图; 就可以了
但是你要提查询高效率就只能在你要排序的字段上建索引
create index 索引名 on A(排序的字段);追问

问题是我的主键本身就是乱的,列如这列是主键,有1开头的有2开头的,3开头,4开头,先把3、4开头的数字顺序排列,列如310、311、312这样,3、4排完,在100、101开始,期间,3开头的数字超过了100个,399后面就是3100,3101这样了,这些数字都要在4开头的,1、2 开头的前面

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-04-05
可以这么做:
select * into #temp from table order by id--将排序数据插入临时表
delete from table--删除原表数据
insert table select * from #temp --将临时表的数据插入原表
drop table #temp --删除临时表
第2个回答  2013-11-29
oracle中可以这样
先将原表数据按要求存入一张复制的临时表中
然后drop原表
再从临时表中复制数据导原表中
再drop临时表
不过以上这种有什么现实意义么....
具体实现如下:

create table bap_temp as select * from bap_user order by id desc;
drop table bap_user;
create table bap_user as select * from bap_temp;
drop table bap_temp;追问

小白表示,能学到的都是有意义的,谢谢~

第3个回答  2013-11-29
你可以给排好序的数据打上伪列后再插入目标表中,把伪列也插进去。
这样你下次查询的时候只要ORDER BY 伪列 即可!
第4个回答  2013-11-29
先读出来存入临时表#A
再删除A表数据
将临时表数据添加到A表中,但你要处理好主键

不过我还没见过你这么用的,直接建个视图就行了追问

我是新手啊,碰到个比较麻烦的问题,就相出这么个法子,4列的表都是int类型,第一列,现在是空的,这个是要排好序后从200开始递增到结束的列,第二列的数字分两个部分一部分是从100-500的,第二部分从800-1000,先将800-1000部分按顺序排列,1000之后再是100-500排下去

追答

第二列将800-1000范围外的数据全部后移1000按顺序排,是这样吧?

相似回答