จะเปลี่ยนลำดับคอลัมน์ในตารางโดยใช้แบบสอบถาม sql ใน sql Server 2005 ได้อย่างไร


109

วิธีการเปลี่ยนลำดับคอลัมน์ในตารางโดยใช้แบบสอบถาม SQL ใน SQL Server 2005

ฉันต้องการจัดเรียงลำดับคอลัมน์ในตารางใหม่โดยใช้แบบสอบถาม SQL


3
หากคุณกำลังอ้างถึงการเปลี่ยนตำแหน่งของคอลัมน์ตามที่มีอยู่ในตารางคุณจะต้องสร้างตารางใหม่ตามลำดับที่ต้องการแทรกข้อมูลจากตารางเก่าจากนั้นจึงวางตารางเดิม ไม่มีทางอื่น (สำหรับความรู้ของฉัน) ที่จะทำเช่นนั้น
Michael Todd

คุณกำลังพูดถึงลำดับคอลัมน์ในคำสั่ง SELECT หรือลำดับคอลัมน์ในนิยามตาราง?
marc_s

คำตอบ:


112

คุณไม่สามารถ. ลำดับคอลัมน์เป็นเพียง "เครื่องสำอาง" ที่มนุษย์เราสนใจ - สำหรับ SQL Server มันแทบจะไม่เกี่ยวข้องกันเลย

สิ่งที่สตูดิโอจัดการเซิร์ฟเวอร์ SQL ทำในพื้นหลังเมื่อคุณเปลี่ยนลำดับคอลัมน์มีการสร้างตารางใหม่ตั้งแต่ต้นด้วยCREATE TABLEคำสั่งใหม่คัดลอกข้อมูลจากตารางเก่าจากนั้นจึงวางลง

ไม่มีคำสั่ง SQL เพื่อกำหนดการจัดลำดับคอลัมน์


4
ไม่ไม่มีสิ่งนี้ ni SQL Server และไม่ควรอยู่ใน RBDMS จริงใด ๆ - ลำดับคอลัมน์ไม่ใช่แนวคิดที่เกี่ยวข้องกับตาราง SQL
marc_s

68
@marc_s ไม่มีเหตุผลที่ดีในการสนับสนุนลำดับคอลัมน์ แม้ว่าจะเป็นเพียงภาพ เพียงแค่ช่วยให้ดูข้อมูลในตารางได้ง่ายขึ้นด้วยลำดับคอลัมน์ที่กำหนดเมื่อคุณสร้าง "SELECT *" ฉันเป็นนักพัฒนาและทำแบบสอบถามประเภทนี้ตลอดเวลา คุณสามารถเผื่อเวลาด้วยลำดับคอลัมน์ที่กำหนดไว้ล่วงหน้าที่ดี จากมุมมองอื่น ๆ แน่นอนว่ามันไม่มีเหตุผล: ไม่มีอะไรควรขึ้นอยู่กับลำดับคอลัมน์ อย่างไรก็ตามมีคอลัมน์ ORDINAL_POSITION เมื่อคุณค้นหา "INFORMATION_SCHEMA.COLUMNS" ฉันไม่รู้ว่ามันหมายถึงอะไร ... แต่มันต้องมีอะไรเกี่ยวกับเรื่องนี้
JotaBe

18
ลำดับคอลัมน์มีความเกี่ยวข้องเช่นเมื่อใช้ INSERT INTO โดยไม่ระบุชื่อคอลัมน์ อีกตัวอย่างหนึ่งคือ ORDER BY คอลัมน์ดัชนีแทนชื่อคอลัมน์ เห็นได้ชัดว่าทั้งสองไม่แนะนำแนวทางปฏิบัติ แต่ SQL Server อนุญาตดังนั้นอาจมีคนใช้บางที่อาจทำลายรหัส T-SQL เมื่อเปลี่ยนลำดับคอลัมน์
Carvellis

12
@Carvelis: คุณไม่ควรใช้INSERTโดยไม่ระบุคอลัมน์ของคุณอย่างชัดเจนอีกต่อไป!
marc_s

2
@marc_s: แน่นอน แต่ฉันไม่ใช่คนเดียวที่ทำงานในโครงการ ฉันเคยเห็นโครงการไม่กี่โครงการที่มีคนใช้รหัสประเภทนี้
Carvellis

30

คุณต้องแสดงรายการฟิลด์ตามลำดับที่คุณต้องการให้ส่งคืนอย่างชัดเจนแทนที่จะใช้ * สำหรับคำสั่ง 'ค่าเริ่มต้น'

คำถามเดิม:

select * from foobar

ผลตอบแทน

foo bar
--- ---
  1   2

ตอนนี้เขียน

select bar, foo from foobar

bar foo
--- ---
  2   1

คำตอบข้างบนผิดใช่หรือไม่? คำตอบนี้แสดงวิธีเรียงลำดับคอลัมน์อย่างแท้จริงเหตุใดอันก่อนหน้านี้จึงมีเครื่องหมายถูกและอันนี้ไม่มี
Agent Lu

1
@Agent Lu ปัญหาคือถ้อยคำของคำถามเดิม มาร์คและฉันได้ตีความคำถามของ OP สำหรับ 'เปลี่ยนลำดับของคอลัมน์' แตกต่างกัน เขาโต้แย้งอย่างชัดเจนว่าเหตุใดลำดับคอลัมน์จึงไม่เกี่ยวข้องในตารางที่จัดเก็บ (แม้ว่าชื่อ) ฉันแสดงให้เห็นว่าสามารถดึงข้อมูลในลำดับคอลัมน์อื่นได้อย่างไร ไม่เหมือนกันเลย!
lexu

23

อ้างอิงจากhttp://msdn.microsoft.com/en-us/library/aa337556.aspx

งานนี้ไม่ได้รับการสนับสนุนโดยใช้คำสั่ง Transact-SQL

สามารถทำได้โดยใช้create/ copy / drop/ rename ตามที่komma8.komma1ตอบ

หรือคุณสามารถใช้ SQL Server Management Studio

  1. ในObject Explorerให้คลิกขวาที่ตารางที่มีคอลัมน์ที่คุณต้องการจัดลำดับใหม่แล้วคลิกออกแบบ (ปรับเปลี่ยนในเวอร์ชัน 2005 SP1 หรือรุ่นก่อนหน้า)
  2. เลือกช่องทางด้านซ้ายของชื่อคอลัมน์ที่คุณต้องการจัดลำดับใหม่ (คุณสามารถเลือกหลายคอลัมน์ได้โดยกดปุ่ม [shift] หรือ [ctrl] บนแป้นพิมพ์ของคุณ)
  3. ลากคอลัมน์ไปยังตำแหน่งอื่นภายในตาราง

จากนั้นคลิกบันทึก วิธีนี้จะลดลงและสร้างตารางใหม่ดังนั้นข้อผิดพลาดบางอย่างอาจเกิดขึ้น

ถ้าเปิดใช้งานตัวเลือกChange Trackingสำหรับฐานข้อมูลและตารางคุณไม่ควรใช้วิธีนี้

หากปิดใช้งานตัวเลือกป้องกันการบันทึกการเปลี่ยนแปลงที่ต้องใช้ตัวเลือกการสร้างตารางใหม่ควรถูกล้างในเมนูเครื่องมือ> ตัวเลือก> นักออกแบบมิฉะนั้นจะเกิดข้อผิดพลาด"ไม่อนุญาตให้บันทึกการเปลี่ยนแปลง"

  • การปิดใช้งานการป้องกันการบันทึกการเปลี่ยนแปลงที่ต้องใช้ตัวเลือกการสร้างตารางซ้ำเป็นสิ่งที่ Microsoft แนะนำอย่างยิ่งเนื่องจากจะทำให้ข้อมูลการติดตามการเปลี่ยนแปลงที่มีอยู่ถูกลบออกเมื่อสร้างตารางใหม่ดังนั้นคุณไม่ควรปิดใช้งานตัวเลือกนี้หากการติดตามการเปลี่ยนแปลงเป็น เปิดใช้งาน!

ปัญหาอาจเกิดขึ้นระหว่างการสร้างคีย์หลักและคีย์ต่างประเทศ

หากข้อผิดพลาดใด ๆ ข้างต้นเกิดขึ้นการบันทึกจะล้มเหลวซึ่งจะทำให้คุณมีลำดับคอลัมน์เดิม


1
ข้อความ " This task cannot be performed using Transact-SQL statements." ในเอกสารไม่ถูกต้อง ฉันอธิบายผู้เขียนและขอให้เขาเปลี่ยนเป็น " This task is not supported using Transact-SQL statements." ประมาณหนึ่งวันที่ผ่านมาผู้เขียนเห็นด้วยและเอกสารได้รับการแก้ไข คุณสามารถทำตามการสนทนาที่เรามีอยู่บน GitHub
Ronen Ariely

@RonenAriely เก่งมากและขอบคุณที่แจ้งให้เราทราบ ฉันอัปเดตคำตอบของฉัน
robotik

ยินดีต้อนรับคุณมากที่สุด @robotik 😀 ฉันหวังว่าทุกคนที่มาที่นี่และเห็นการตอบรับที่มีคะแนนโหวตมากที่สุดจะเข้าใจว่ามันเป็นความผิดพลาดทั้งหมด น่าเสียดายที่ชุมชนมักจะทำตัวเหมือนฝูงสัตว์ (วัวควาย) และครั้งหนึ่งเคยเป็นผู้นำและผู้ให้ข้อมูลอันดับต้น ๆ (ซึ่งถือว่าเป็นผู้เชี่ยวชาญอันดับต้น ๆ ) ในชุมชนทำผิดพลาดแล้วคนอื่น ๆ ก็ติดตามเขาดังที่เกิดขึ้นในหัวข้อนี้ ผู้คนยังคงลงคะแนนสำหรับความผิดพลาดหากได้รับคะแนนเสียงจำนวนมาก (แนวทางของ: "เนื่องจากทุกคนพูดเช่นนั้นมันก็เป็นความจริง") และคนอื่น ๆ ที่จะเข้ามาในฟอรัมจะคิดว่านี่เป็นคำตอบที่ถูกต้อง
Ronen Ariely

1
@RonenAriely นั่นคือเหตุผลที่ฉันมักจะเลื่อนลง :)
robotik

13

คำถามนี้คล้ายกับคำถามเกี่ยวกับการจัดลำดับระเบียนในผลลัพธ์ของแบบสอบถาม .. และโดยทั่วไปแล้วไม่มีใครชอบคำตอบที่ถูกต้องอย่างเป็นทางการ ;-)

นี่คือ:

  • ตามมาตรฐาน SQL คอลัมน์ในตารางจะไม่ "เรียงลำดับ"
  • ด้วยเหตุนี้ a select *จึงไม่บังคับให้ส่งคืนคอลัมน์ตามลำดับเฉพาะ
  • โดยทั่วไปแล้ว RDBMS แต่ละรายการจะมีลำดับ "เริ่มต้น" ประเภทหนึ่ง (โดยปกติจะเป็นลำดับที่เพิ่มคอลัมน์ลงในตารางไม่ว่าจะในcreate table' or in theตารางแก้ไขเพิ่มคำสั่ง "
  • ดังนั้นหากคุณอาศัยลำดับของคอลัมน์ (เนื่องจากคุณกำลังใช้ผลลัพธ์ของคิวรีเพื่อวิเคราะห์โครงสร้างข้อมูลอื่น ๆ จากตำแหน่งของคอลัมน์) ให้แสดงรายการคอลัมน์อย่างชัดเจนตามลำดับที่คุณต้องการ

11

แน่นอนคุณสามารถเปลี่ยนลำดับของคอลัมน์ในคำสั่ง sql อย่างไรก็ตามหากคุณต้องการเรียงลำดับคอลัมน์ทางกายภาพของตารางนามธรรมคุณสามารถสร้างมุมมองได้ กล่าวคือ

CREATE TABLE myTable(
    a int NULL,
    b varchar(50) NULL,
    c datetime NULL
);


CREATE VIEW vw_myTable
AS
SELECT c, a, b
  FROM myTable;

select * from myTable;
a  b  c
-  -  -

select * from vw_myTable
c  a  b
-  -  -

สิ่งนี้เปลี่ยนเวลาในการสืบค้นหรือไม่
blindguy

@blindguy ไม่มันไม่เปลี่ยนเวลาค้นหาของคุณ
mevdiven

9

ใน SQLServer Management Studio:

เครื่องมือ -> ตัวเลือก -> นักออกแบบ -> นักออกแบบตารางและฐานข้อมูล

  • ยกเลิกการเลือก 'ป้องกันการบันทึกการเปลี่ยนแปลงที่ต้องสร้างตารางใหม่'

จากนั้น:

  • คลิกขวาที่ตารางที่คุณต้องการเรียงลำดับคอลัมน์ใหม่
  • คลิก 'ออกแบบ'
  • ลากคอลัมน์ไปตามลำดับที่คุณต้องการ
  • สุดท้ายคลิกบันทึก

SQLServer Management studio จะวางตารางและสร้างขึ้นใหม่โดยใช้ข้อมูล


6

คุณสามารถทำได้โดยสร้างตารางใหม่คัดลอกข้อมูลทั้งหมดวางตารางเก่าจากนั้นเปลี่ยนชื่อตารางใหม่เพื่อแทนที่ตารางเก่า

คุณยังสามารถเพิ่มคอลัมน์ใหม่ลงในตารางคัดลอกคอลัมน์ตามข้อมูลคอลัมน์วางคอลัมน์เก่าจากนั้นเปลี่ยนชื่อคอลัมน์ใหม่ให้ตรงกับคอลัมน์เก่า ตัวอย่างง่ายๆด้านล่าง: http://sqlfiddle.com/#!3/67af4/1

CREATE TABLE TestTable (
    Column1 INT,
    Column2 VARCHAR(255)
);
GO

insert into TestTable values(1, 'Test1');
insert into TestTable values(2, 'Test2');
GO

select * from TestTable;
GO

ALTER TABLE TestTable ADD Column2_NEW VARCHAR(255);
ALTER TABLE TestTable ADD Column1_NEW INT;
GO

update TestTable 
set Column1_NEW = Column1, 
    Column2_NEW = Column2;
GO

ALTER TABLE TestTable DROP COLUMN Column1;
ALTER TABLE TestTable DROP COLUMN Column2;
GO

sp_rename 'TestTable.Column1_NEW', 'Column1', 'COLUMN';
GO
sp_rename 'TestTable.Column2_NEW', 'Column2', 'COLUMN';
GO

select * from TestTable;
GO

1
ฉันเขียนกระบวนงานเก็บไว้ซึ่งทำสิ่งที่คล้ายกัน สร้างตารางใหม่โดยอัตโนมัติโดยใช้ SQL แบบไดนามิก caseyplummer.wordpress.com/2013/07/22/…
Casey Plummer

6

ใน SQLServer Management Studio:

Tools-> Options-> Designers->Table and Database Designers

Prevent saving changes that require table re-creationยกเลิกการเลือก

ตอนนี้คุณสามารถจัดลำดับตารางใหม่ได้


2

เซิร์ฟเวอร์ SQL สร้างสคริปต์ภายใน สร้างตารางชั่วคราวพร้อมการเปลี่ยนแปลงใหม่และคัดลอกข้อมูลและวางตารางปัจจุบันจากนั้นสร้างตารางแทรกใหม่จากตารางชั่วคราว หาได้จากตัวเลือก "Generate Change script" ssms 2014 สคริปต์แบบนี้ จากที่นี่: วิธีเปลี่ยนลำดับคอลัมน์ในตารางโดยใช้แบบสอบถาม sql

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_emps
    (
    id int NULL,
    ename varchar(20) NULL
    )  ON [PRIMARY]
GO
ALTER TABLE dbo.Tmp_emps SET (LOCK_ESCALATION = TABLE)
GO
IF EXISTS(SELECT * FROM dbo.emps)
     EXEC('INSERT INTO dbo.Tmp_emps (id, ename)
        SELECT id, ename FROM dbo.emps WITH (HOLDLOCK TABLOCKX)')
GO
DROP TABLE dbo.emps
GO
EXECUTE sp_rename N'dbo.Tmp_emps', N'emps', 'OBJECT' 
GO
COMMIT

1

หากตารางของคุณมีคอลัมน์เพียงพอคุณสามารถลองสิ่งนี้ได้ ขั้นแรกให้สร้างตารางใหม่โดยมีลำดับคอลัมน์ที่ต้องการ

    create table new as select column1,column2,column3,....columnN from table_name;

ตอนนี้วางตารางโดยใช้คำสั่ง drop

    drop table table_name;

ตอนนี้เปลี่ยนชื่อตารางที่สร้างขึ้นใหม่เป็นชื่อตารางเก่าของคุณ

    rename new to table_name;

ตอนนี้เลือกตารางคุณได้จัดเรียงคอลัมน์ใหม่ตามที่คุณต้องการก่อนหน้านี้

    select * from table_name;

เช่นเดียวกับการสร้างตารางใหม่คัดลอกข้อมูลจากตารางที่มีอยู่ไปยังตารางใหม่ลบตารางเก่าและเปลี่ยนชื่อตารางใหม่ พูดอย่างเคร่งครัดนี่ไม่ใช่การเปลี่ยนลำดับคอลัมน์ของตาราง เนื่องจากสิ่งนี้สร้าง / คัดลอกจากตารางเก่าจึงต้องใช้เวลาสำหรับตารางขนาดใหญ่ สุดท้าย แต่ไม่ท้ายสุดไวยากรณ์ที่เสนอใช้ไม่ได้ใน t-sql
Jean-François

0

ในตอนท้ายของวันคุณไม่สามารถทำได้ใน MS SQL ฉันเพิ่งสร้างตารางขณะเดินทาง (การเริ่มต้นแอปพลิเคชัน) โดยใช้ขั้นตอนที่เก็บไว้ซึ่งอ่านจากตารางการค้นหา เมื่อฉันสร้างมุมมองที่รวมสิ่งเหล่านี้กับตารางอื่นที่ฉันได้สร้างขึ้นด้วยตนเองก่อนหน้านี้ (สคีมาเดียวกันกับข้อมูล) มันล้มเหลวเพราะฉันใช้ '' เลือก * UNION เลือก * 'สำหรับมุมมอง ในขณะเดียวกันถ้าฉันใช้เฉพาะสิ่งที่สร้างขึ้นผ่านขั้นตอนการจัดเก็บฉันก็ทำได้สำเร็จ

โดยสรุป: หากมีแอปพลิเคชันใด ๆ ที่ขึ้นอยู่กับลำดับของคอลัมน์แสดงว่าเป็นการเขียนโปรแกรมที่ไม่ดีและจะสร้างปัญหาในอนาคตอย่างแน่นอน คอลัมน์ควร 'รู้สึก' เป็นอิสระที่จะอยู่ที่ใดก็ได้และใช้สำหรับกระบวนการข้อมูลใด ๆ (INSERT, UPDATE, SELECT)


0

คุณสามารถบรรลุได้ด้วยขั้นตอนเหล่านี้:

  1. ลบคีย์แปลกปลอมและคีย์หลักของตารางเดิมทั้งหมด

  2. เปลี่ยนชื่อตารางเดิม

  3. ใช้ CTAS สร้างตารางเดิมตามลำดับที่คุณต้องการ

  4. วางโต๊ะเก่า

  5. ใช้ข้อ จำกัด ทั้งหมดกลับไปที่ตารางเดิม


0

หากคอลัมน์ที่จะจัดเรียงใหม่เพิ่งถูกสร้างขึ้นและว่างเปล่าคุณสามารถลบคอลัมน์และเพิ่มใหม่ได้ตามลำดับที่ถูกต้อง

สิ่งนี้เกิดขึ้นกับฉันการขยายฐานข้อมูลด้วยตนเองเพื่อเพิ่มฟังก์ชันใหม่และฉันพลาดคอลัมน์ออกไปและเมื่อฉันเพิ่มเข้าไปลำดับก็ไม่ถูกต้อง

หลังจากไม่พบวิธีแก้ปัญหาที่เพียงพอฉันก็แก้ไขตารางโดยใช้คำสั่งประเภทต่อไปนี้

ALTER TABLE  tablename  DROP COLUMN  columnname; 
ALTER TABLE  tablename  ADD columnname columntype;

หมายเหตุ: ทำได้เฉพาะในกรณีที่คุณไม่มีข้อมูลในคอลัมน์ที่คุณกำลังทิ้ง

มีคนบอกว่าลำดับคอลัมน์ไม่สำคัญ ฉันใช้ SQL Server Management Studio "สร้างสคริปต์" เป็นประจำเพื่อสร้างเวอร์ชันข้อความของสคีมาของฐานข้อมูล ในการควบคุมเวอร์ชันอย่างมีประสิทธิภาพสคริปต์เหล่านี้ (git) และเปรียบเทียบ (WinMerge) จำเป็นที่ผลลัพธ์จากฐานข้อมูลที่เข้ากันได้จะเหมือนกันและความแตกต่างที่เน้นคือความแตกต่างของฐานข้อมูลของแท้

ลำดับคอลัมน์มีความสำคัญ แต่สำหรับบางคนไม่ใช่ทุกคน!


0

ฉันคิดว่าคุณต้องการเพิ่มคอลัมน์ใหม่ในตำแหน่งเฉพาะ คุณสามารถสร้างคอลัมน์ใหม่ได้โดยย้ายคอลัมน์ปัจจุบันไปทางขวา

+---+---+---+
| A | B | C |
+---+---+---+

ลบดัชนีที่ได้รับผลกระทบและการอ้างอิงคีย์ต่างประเทศทั้งหมด เพิ่มคอลัมน์ใหม่ที่มีประเภทข้อมูลเดียวกันเช่นคอลัมน์สุดท้ายและคัดลอกข้อมูลที่นั่น

+---+---+---+---+
| A | B | C | C |
+---+---+---+---+
          |___^

เปลี่ยนประเภทข้อมูลของคอลัมน์ที่สามเป็นประเภทเดียวกันเช่นคอลัมน์ก่อนหน้าและคัดลอกข้อมูลที่นั่น

+---+---+---+---+
| A | B | B | C | 
+---+---+---+---+
      |___^

เปลี่ยนชื่อคอลัมน์ตามลำดับสร้างดัชนีที่ถูกลบและการอ้างอิงคีย์ต่างประเทศใหม่

+---+---+---+---+
| A | D | B | C | 
+---+---+---+---+

เปลี่ยนชนิดข้อมูลของคอลัมน์ที่สอง

เก็บไว้ในใจว่าคำสั่งคอลัมน์ที่เป็นแค่ "เครื่องสำอาง" สิ่งที่เหมือนmarc_s กล่าวว่า


-1

ใช้

SELECT * FROM TABLE1

ซึ่งแสดงลำดับคอลัมน์เริ่มต้นของตาราง

หากคุณต้องการเปลี่ยนลำดับของคอลัมน์

ระบุชื่อคอลัมน์ที่จะแสดงตามลำดับ

SELECT COLUMN1, COLUMN5, COLUMN4, COLUMN3, COULMN2 FROM TABLE1

คำถามไม่เกี่ยวกับการสั่งซื้อชั่วคราว คำถามเกี่ยวกับโครงสร้างการออกแบบตารางเมื่อคุณแก้ไขตารางและเพิ่มคอลัมน์ใหม่
vikas Chaturvedi

-1

คุณสามารถใช้การจัดทำดัชนี .. หลังจากการจัดทำดัชนีหากเลือก * จาก XXXX ผลลัพธ์ควรเป็นไปตามดัชนี แต่ชุดผลลัพธ์เท่านั้น .. ไม่ใช่โครงสร้างของตาราง


-1

คุณสามารถเปลี่ยนแปลงได้โดยใช้แบบสอบถาม SQL นี่คือแบบสอบถาม sql เพื่อเปลี่ยนลำดับของคอลัมน์

ALTER TABLE table name 
CHANGE COLUMN `column1` `column1` INT(11) NOT NULL COMMENT '' AFTER `column2`;

ฉันสงสัยว่าสิ่งนี้จะลดลงและสร้างตารางใหม่เหมือนใน SSMS หรือไม่ ไม่ว่าจะด้วยวิธีใดฉันจะไม่ทอยลูกเต๋าในฐานข้อมูลการผลิตแม้ว่าวิธีนี้จะดูน่าสนใจและคุ้มค่ากับการพิจารณา
samis

ฟังก์ชันนี้ไม่ทำงานใน SQL Server ตามที่ OP ระบุ หวังว่าจะได้
บิล

1
นี่คือไวยากรณ์ MySQL ไม่ใช่ SQL Server
Jon Schneider

-1

เพื่อให้มีลำดับคอลัมน์เฉพาะคุณต้องเลือกคอลัมน์ทีละคอลัมน์ตามลำดับที่คุณต้องการ ลำดับการเลือกกำหนดว่าจะเรียงลำดับคอลัมน์อย่างไรในเอาต์พุต


-1

ลองใช้คำสั่งนี้:

alter table students modify age int(5) first; 

สิ่งนี้จะเปลี่ยนตำแหน่งของอายุเป็นตำแหน่งแรก


นี่ไม่ใช่ SQL ที่ถูกต้องใน MSSQL อาจจะเป็น MySQL หรือภาษาถิ่นอื่น แต่ไม่ใช่สำหรับ SQL Server 2005
nsimeonov

-2

แก้ไขชื่อตารางแก้ไขชื่อคอลัมน์ int (5) ก่อน; จะนำคอลัมน์ไปแก้ไขชื่อตารางครั้งแรกแก้ไขชื่อคอลัมน์ int (5) หลัง (tablename);


-3

ตัวอย่าง: เปลี่ยนตำแหน่งของ field_priority หลังจาก field_price ในสถานะตาราง

ALTER TABLE `status` CHANGE `priority` `priority` INT(11) NULL DEFAULT NULL AFTER `price`;

2
นี่คือไวยากรณ์ MySQL ไม่ใช่ SQL Server
Jon Schneider
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.