sql server 改变 列 顺序
在Sqlserver2005下,想改变某表的列顺序。也就是说改变默认的列现实顺序。例如有表tableA建立表时,CREATETABLE[tableA](colAint,c...
在Sqlserver 2005 下,想改变某表的列顺序。
也就是说改变默认的列现实顺序。
例如 有表 tableA
建立表时,
CREATE TABLE [tableA](
colA int,
colB int,
colC int
)
用select * from tableA 时显示的顺序就是 colA,colB,colC
现在想改变默认的这个顺序,当执行 select * from tableA 时
按照colB,colA,colC 的顺序显示。
1,不适用view
2,数据库是Sqlserver 2005
当我准备更改 系统表 syscolumns时,说没有权限,虽然我已经
sp_configure 'allow updates', 1
RECONFIGURE WITH OVERRIDE
3,不想重新建表,因为数据太多。
谢谢! 展开
也就是说改变默认的列现实顺序。
例如 有表 tableA
建立表时,
CREATE TABLE [tableA](
colA int,
colB int,
colC int
)
用select * from tableA 时显示的顺序就是 colA,colB,colC
现在想改变默认的这个顺序,当执行 select * from tableA 时
按照colB,colA,colC 的顺序显示。
1,不适用view
2,数据库是Sqlserver 2005
当我准备更改 系统表 syscolumns时,说没有权限,虽然我已经
sp_configure 'allow updates', 1
RECONFIGURE WITH OVERRIDE
3,不想重新建表,因为数据太多。
谢谢! 展开
展开全部
请问在SQL里用什么语句改变列的顺序?
即把
col_a,col_b,col_c,col_d
改成
col_b,col_c,col_d,col_a
如果真要改,给你个办法,但我个人不主张这么改,没有任何必要。
--启用系统表更新
USE master
GO
sp_configure 'allow updates', 1
GO
RECONFIGURE WITH OVERRIDE
GO
declare @colid1 smallint,@colid2 smallint
select @colid1 = colid from syscolumns where id = object_id('yourtable') and name = 'filed1'
select @colid2 = colid from syscolumns where id = object_id('yourtable') and name = 'filed2'
update syscolumns set colid = @colid2 where id = object_id('yourtable') and name = 'filed1'
update syscolumns set colid = @colid1 where id = object_id('yourtable') and name = 'filed2'
--执行完毕后,立即禁用系统表更新:
sp_configure 'allow updates', 0
GO
RECONFIGURE WITH OVERRIDE
GO
最简洁的办法
select colB,colA,colC from tableA
即把
col_a,col_b,col_c,col_d
改成
col_b,col_c,col_d,col_a
如果真要改,给你个办法,但我个人不主张这么改,没有任何必要。
--启用系统表更新
USE master
GO
sp_configure 'allow updates', 1
GO
RECONFIGURE WITH OVERRIDE
GO
declare @colid1 smallint,@colid2 smallint
select @colid1 = colid from syscolumns where id = object_id('yourtable') and name = 'filed1'
select @colid2 = colid from syscolumns where id = object_id('yourtable') and name = 'filed2'
update syscolumns set colid = @colid2 where id = object_id('yourtable') and name = 'filed1'
update syscolumns set colid = @colid1 where id = object_id('yourtable') and name = 'filed2'
--执行完毕后,立即禁用系统表更新:
sp_configure 'allow updates', 0
GO
RECONFIGURE WITH OVERRIDE
GO
最简洁的办法
select colB,colA,colC from tableA
参考资料: http://topic.csdn.net/t/20020429/23/690341.html
展开全部
具体思路就是,将数据新放到一个表tableB
中,
表tableB
的结构与表tableA一样,只不过字段顺序为colB,colA,colC,
这样就将tableA的数据放到了tableB
中,
然后将tableA删除,并将tableB
重命名为tableA就可以了,
具体的SQL语句如下:
colB,colA,colC
select
into
tableB
FROM
tableA
drop
table
tableA
EXEC
sp_rename
'tableB',
'tableA'
呵呵,希望能有帮助,^_^
中,
表tableB
的结构与表tableA一样,只不过字段顺序为colB,colA,colC,
这样就将tableA的数据放到了tableB
中,
然后将tableA删除,并将tableB
重命名为tableA就可以了,
具体的SQL语句如下:
colB,colA,colC
select
into
tableB
FROM
tableA
drop
table
tableA
EXEC
sp_rename
'tableB',
'tableA'
呵呵,希望能有帮助,^_^
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
什么方法都被你禁止完了
估计用临时表的方法也不行哈,不满足你的第三点说明
那只能用不是方法的方法了
你就直接select
*
from
tableA
然后在显示的结果集中,用鼠标按住colB的列名,拖到colA前面就OK了。
估计用临时表的方法也不行哈,不满足你的第三点说明
那只能用不是方法的方法了
你就直接select
*
from
tableA
然后在显示的结果集中,用鼠标按住colB的列名,拖到colA前面就OK了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以加上条件,where....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
删表重建。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询