Điểm của WHERE 1 = 2 đối với truy vấn bảng CHỌN VÀO


39

Nếu chúng ta muốn tạo một bảng mới từ một bảng hiện có trong SQL Server, chúng ta có thể làm như sau

SELECT * into Table2
from Table1
WHERE 1=2

Điểm của mệnh đề ở đâu? Tôi đã thử nó mà không có mệnh đề where và nó chạy tốt. Tôi đã thấy điều khoản này trong nhiều ví dụ trên internet nhưng không phải là lý do tại sao nó được yêu cầu.

Câu trả lời:


54

Lý do bạn đặt WHERE 1=2mệnh đề trong SELECT INTOtruy vấn đó là để tạo một bản sao trường của bảng hiện có không có dữ liệu .

Nếu bạn đã làm điều này:

select *
into Table2
from Table1

Table2sẽ là một bản sao chính xác Table1, bao gồm các hàng dữ liệu. Nhưng nếu bạn không muốn dữ liệu chứa trong Table1và bạn chỉ muốn cấu trúc bảng, bạn đặt một WHEREmệnh đề để lọc tất cả dữ liệu.

BáoSELECT INTO giá tham khảo BOL :

CHỌN INTO tạo một bảng mới trong nhóm tệp mặc định và chèn các hàng kết quả từ truy vấn vào đó.

Nếu WHEREmệnh đề của bạn không có hàng kết quả, sẽ không có hàng nào được chèn vào bảng mới: Do đó, bạn kết thúc với lược đồ trùng lặp của bảng gốc không có dữ liệu (sẽ là kết quả mong muốn trong trường hợp này).

Hiệu quả tương tự có thể đạt được với TOP (0), ví dụ:

select top (0) *
into Table2
from Table1;

Lưu ý : SELECT INTOSẽ không trùng lặp các chỉ mục, ràng buộc, kích hoạt hoặc lược đồ phân vùng của bảng nguồn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.