0

我的桌子是student_register并且有四列

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

我希望middlename使用 SQL Server 2005 查询在表中永久位于第三位的列。

谢谢你。

4

2 回答 2

3

如果不删除并阅读表格,就无法做你想做的事。要了解 Management Studio 是如何做到这一点的(至少在 2012 年,但我认为这也适用于 2005 年),请转到 Management Studio 的Options> Designers> Table and Database Designer> Uncheck 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
于 2013-03-22T04:53:39.607 回答
1

由于这是一次性的,最简单的方法是为此使用 Visual Database Tools

如何:更改列顺序 (Visual Database Tools) SQL Server 2005

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

要在 TSQL 中执行此操作,您需要:

  • 创建具有正确列顺序的临时表
  • 将数据从原始表插入临时表
  • 删除原始表
  • 将临时表重命名为原始名称
于 2013-03-22T04:52:14.273 回答