2013-03-22 56 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表更改爲原來的名稱