2013-03-22 57 views
0

我的表是student_register,有四列像更改列的排序表永久使用T-SQL查询

1. srno 
2. firstname 
3. lastname 
4. middlename 

我使用SQL Server 2005查询要在第三位置的列middlename永久表。

谢谢。

+0

我不认为这是可能使用'SQL query'因为在表中的列是没有顺序的。你必须重新创建table.But你为什么要重新订购专栏?你总是可以使用'Select'查询来指定列的顺序 – praveen 2013-03-22 04:48:40

+0

谢谢你。 – 2013-03-22 05:10:47

回答

2

没有办法做你想要的东西wi不要掉下来读表。要了解Management Studio如何完成此操作(至少在2012年,但我认为这也适用于2005年),请转至Management Studio的Options>Designers>Table and Database Designer>取消选中Prevent saving changes that require table re-creation

一旦你这样做了,你可以进入表设计器,改变列的顺序,而不是点击“保存”,点击“保存更改脚本”来查看SQL。

这里是SQL 2012将产生:

/* To prevent any potential data loss issues, you should review this script in detail before running it outside the context of the database designer.*/ 
BEGIN TRANSACTION 
SET QUOTED_IDENTIFIER ON 
SET ARITHABORT ON 
SET NUMERIC_ROUNDABORT OFF 
SET CONCAT_NULL_YIELDS_NULL ON 
SET ANSI_NULLS ON 
SET ANSI_PADDING ON 
SET ANSI_WARNINGS ON 
COMMIT 
BEGIN TRANSACTION 
GO 
CREATE TABLE dbo.Tmp_Table_1 
    (
    TEst1 nchar(10) NULL, 
    Test3 nchar(10) NULL, 
    Test2 nchar(10) NULL 
    ) ON [PRIMARY] 
GO 
ALTER TABLE dbo.Tmp_Table_1 SET (LOCK_ESCALATION = TABLE) 
GO 
IF EXISTS(SELECT * FROM dbo.Table_1) 
    EXEC('INSERT INTO dbo.Tmp_Table_1 (TEst1, Test3, Test2) 
     SELECT TEst1, Test3, Test2 FROM dbo.Table_1 WITH (HOLDLOCK TABLOCKX)') 
GO 
DROP TABLE dbo.Table_1 
GO 
EXECUTE sp_rename N'dbo.Tmp_Table_1', N'Table_1', 'OBJECT' 
GO 
COMMIT 
1

因为它是一次性的事情最简单的方法是使用可视化数据库工具为

How to: Change Column Order (Visual Database Tools) SQL Server 2005的

  • 在对象资源管理器,用列右键单击表你想要重新排序并单击设计(在SP1或更早版本中修改)。表格在表设计器中打开。
  • 选择要重新排序的列名称左侧的框。
  • 将列拖到表格中的另一个位置。

要做到这一点在TSQL你需要:

  • 创建列
  • 插入数据的正确顺序临时表为临时表从原始表
  • 降原始表
  • 将temp表更改为原来的名称