Jika saya menambahkan kolom ke tabel di Microsoft SQL Server, dapatkah saya mengontrol di mana kolom ditampilkan secara logis dalam kueri?
Saya tidak ingin mengacaukan tata letak fisik kolom pada disk, tetapi saya ingin mengelompokkan kolom secara logis jika memungkinkan sehingga alat seperti SQL Server Management Studio mencantumkan konten tabel dengan cara yang nyaman.
Saya tahu bahwa saya dapat melakukan ini melalui SQL Management Studio dengan masuk ke mode "desain" untuk tabel dan menyeret urutan kolom, tetapi saya ingin melakukannya dalam SQL mentah sehingga saya dapat melakukan pengurutan ditulis dari baris perintah.
sql-server
fastcall
sumber
sumber
Jawaban:
Anda tidak dapat melakukan ini secara programatik (dengan cara yang aman) tanpa membuat tabel baru.
Apa yang dilakukan Manajer Perusahaan saat Anda melakukan pengubahan urutan adalah membuat tabel baru, memindahkan data, lalu menghapus tabel lama dan mengganti nama tabel baru ke nama yang sudah ada.
Jika Anda ingin kolom Anda dalam urutan / pengelompokan tertentu tanpa mengubah urutan fisiknya, Anda dapat membuat tampilan yang dapat menjadi apa pun yang Anda inginkan.
sumber
Saya pikir apa yang hilang dari semua orang di sini, adalah bahwa meskipun tidak semua orang harus berurusan dengan 10, 20, atau 1000 contoh dari sistem perangkat lunak yang sama yang dipasang di seluruh negara dan dunia ... kita yang merancang perangkat lunak yang dijual secara komersial melakukannya. Akibatnya, kami memperluas sistem dari waktu ke waktu, memperluas tabel dengan menambahkan bidang saat kemampuan baru diperlukan, dan saat bidang tersebut diidentifikasi memang termasuk dalam tabel yang ada, dan dengan demikian, lebih dari satu dekade memperluas, menumbuhkan, menambahkan bidang, dll. ke tabel .... dan kemudian harus bekerja dengan tabel-tabel tersebut mulai dari desain, dukungan, hingga terkadang menggali data mentah / pemecahan masalah untuk men-debug bug fungsionalitas baru .... sangat menjengkelkan jika tidak memiliki informasi utama yang Anda inginkan lihat dalam beberapa bidang pertama,
Saya sering berharap saya bisa melakukan ini, untuk alasan yang tepat ini. Tetapi singkatnya melakukan persis apa yang dilakukan SQL, Membuat Buat Skrip untuk Tabel baru seperti yang saya inginkan, menulis Sisipan ke dalamnya, lalu menghapus semua batasan, hubungan, kunci, indeks, dll, dll yang ada dari tabel yang ada dan mengganti nama tabel "baru" kembali ke nama lama, lalu membaca semua kunci, hubungan, indeks, dll ....
Bukan hanya membosankan, menyita waktu tetapi ... dalam lima tahun lagi, akan perlu terjadi lagi ....
Ini sangat mendekati nilai pekerjaan yang sangat besar itu, namun intinya adalah ... ini tidak akan menjadi yang terakhir kali kita membutuhkan kemampuan ini, karena sistem kita akan terus tumbuh, berkembang, dan mendapatkan bidang dalam urutan yang aneh didorong oleh kebutuhan / tambahan desain.
Mayoritas pengembang berpikir dari sudut pandang sistem tunggal yang melayani satu perusahaan atau pasar kotak keras yang sangat spesifik.
Para perancang dan pemimpin pembangunan yang "tidak terpakai" tetapi sangat progresif dalam ruang pasar mereka akan selalu harus menghadapi masalah ini, berulang kali ..... akan menyukai solusi kreatif jika ada yang memilikinya. Ini dapat dengan mudah menghemat perusahaan saya selusin jam seminggu, hanya tidak perlu menggulir ke atas, atau mengingat di mana bidang "itu" ada di tabel data sumber ....
sumber
FieldID Guid
,OrderBy int
. Selesai. Kemudian SSMS atauSELECT *
gunakan itu. Matikan jika Anda seorang DBA yang sempurna dan tidak menginginkannya. Sangat membuat frustasi. Dan sekarang meja saya cukup besar sehingga saya tidak bisa memaksakannya lagi.Jika saya memahami pertanyaan Anda, Anda ingin memengaruhi kolom apa yang dikembalikan pertama, kedua, ketiga, dll. Yang ada kueri yang , bukan?
Jika semua pertanyaan Anda ditulis dengan
SELECT * FROM TABLE
- maka akan muncul di output seperti yang ditata dalam SQL.Jika kueri Anda ditulis dengan
SELECT Field1, Field2 FROM TABLE
- maka urutannya dalam SQL tidak menjadi masalah.sumber
Ketika Management Studio melakukannya, itu membuat tabel sementara, menyalin semuanya, menjatuhkan tabel asli Anda dan mengganti nama tabel sementara. Tidak ada pernyataan T-SQL sederhana yang setara.
Jika Anda tidak suka melakukan itu, Anda selalu dapat membuat tampilan tabel dengan kolom sesuai urutan yang Anda inginkan dan menggunakannya?
Edit: dipukuli!
sumber
Ada satu cara, tetapi hanya sementara untuk kueri itu sendiri. Sebagai contoh,
Katakanlah Anda memiliki 5 tabel. Tabel disebut
T_Testing
FirstName, LastName, PhoneNumber, Email, dan Member_ID
Anda ingin mencantumkan ID mereka, lalu Nama Belakang, lalu Nama Depan, lalu Telepon lalu Email.
Anda dapat melakukannya sesuai Select.
Select Member_ID, LastName, FirstName, PhoneNumber, Email From T_Testing
Selain itu, jika Anda hanya ingin Nama Belakang untuk Ditampilkan sebelum nama depan karena alasan tertentu, Anda juga dapat melakukannya sebagai berikut:
Select LastName, * From T_Testing
Satu-satunya hal yang ingin Anda lakukan adalah memastikan bahwa Fungsi OrderBy atau Where perlu dilambangkan sebagai Table.Column jika Anda akan menggunakan Where atau OrderBy
Contoh:
Select LastName, * From T_Testing Order By T_Testing.LastName Desc
Saya harap ini membantu, saya mengetahuinya karena saya perlu melakukan ini sendiri.
sumber
Yang benar-benar dilakukan skrip adalah membuat tabel tabel kedua dengan urutan kolom yang diinginkan, menyalin semua data Anda ke dalamnya, menghapus tabel asli, dan kemudian mengganti nama tabel sekunder untuk menggantikannya. Ini menghemat Anda menulisnya sendiri meskipun jika Anda menginginkan skrip penerapan.
sumber
Ini dapat dilakukan menggunakan SQL, dengan memodifikasi tabel sistem secara langsung. Misalnya, lihat di sini:
Alter table - Tambahkan kolom baru di antaranya
Namun, saya tidak akan merekomendasikan bermain dengan tabel sistem, kecuali benar-benar diperlukan.
sumber
Tidak mungkin mengubah urutan kolom tanpa membuat ulang seluruh tabel. Jika Anda memiliki beberapa contoh database saja, Anda dapat menggunakan SSMS untuk ini (Pilih tabel dan klik "desain").
Jika Anda memiliki terlalu banyak contoh untuk proses manual, Anda harus mencoba skrip ini: https://github.com/Epaminaidos/reorder-columns
sumber