Apa gunanya WHERE 1 = 2 untuk kueri tabel SELECT INTO


39

Jika kita ingin membuat tabel baru dari yang sudah ada di SQL Server kita bisa melakukan hal berikut

SELECT * into Table2
from Table1
WHERE 1=2

Apa gunanya klausa di mana? Saya mencobanya tanpa klausa di mana dan itu berjalan dengan baik. Saya pernah melihat ini di mana klausa dalam banyak contoh di internet tetapi bukan alasan mengapa itu diperlukan.

Jawaban:


54

Alasan Anda memasukkan WHERE 1=2klausa dalam SELECT INTOkueri itu adalah untuk membuat salinan bidang dari tabel yang ada tanpa data .

Jika Anda melakukan ini:

select *
into Table2
from Table1

Table2akan menjadi duplikat yang tepat dari Table1, termasuk baris data. Tetapi jika Anda tidak ingin data yang terkandung di dalamnya Table1, dan Anda hanya ingin struktur tabel, Anda meletakkan aWHERE klausa untuk menyaring semua data.

SELECT INTOKutipan Referensi BOL :

PILIH… INTO membuat tabel baru di grup grup default dan menyisipkan baris yang dihasilkan dari kueri ke dalamnya.

Jika Anda WHERE klausa tidak memiliki baris yang dihasilkan, tidak ada yang akan dimasukkan ke dalam tabel baru: Oleh karena itu, Anda berakhir dengan skema duplikat dari tabel asli tanpa data (yang akan menjadi hasil yang diinginkan dalam kasus ini).

Efek yang sama dapat dicapai dengan TOP (0), misalnya:

select top (0) *
into Table2
from Table1;

Catatan : Itu SELECT INTOtidak akan menduplikasi indeks, kendala, pemicu, atau skema partisi tabel sumber.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.