2012-06-12 28 views
92

Trong SQL Server Compact Edition trong Visual Studio 2010 (có thể SQL Server và SQL nói chung, tôi không biết), lệnh này làm việc:Tại sao tôi không thể sử dụng bí danh trong câu lệnh DELETE?

DELETE FROM foods WHERE (name IN ('chickens', 'rabbits')) 

nhưng lệnh này tạo ra một lỗi của: Error near identifier f. Expecting OUTPUT.

DELETE FROM foods f WHERE (f.name IN ('chickens', 'rabbits')) 
+0

@ aaron-bertrand Cảm ơn bạn đã sửa tiêu đề của tôi. Tôi đã không nhận ra các thuật ngữ chính xác cho những gì tôi đăng (nếu không google có thể đã giải quyết điều này một cách nhanh chóng). Cám ơn bạn một lần nữa. –

+0

Không phải lo lắng. Chỉ cố gắng làm cho nó rõ ràng cho người đọc khác. –

+0

Tôi đồng ý với bạn bằng cách thay đổi cú pháp giữa các lệnh khác nhau đôi khi hơi khó hiểu. –

Trả lời

148

tới Alias ​​bảng, bạn sẽ phải nói:

DELETE f FROM dbo.foods AS f WHERE f.name IN (...); 

tôi không nhìn thấy điểm của răng cưa cho cụnàytuyên bố, đặc biệt là kể từ khi (ít nhất là IIRC) điều này không còn phù hợp với ANSI nghiêm ngặt. Nhưng có, như ý kiến ​​đề nghị, nó có thể là cần thiết cho các hình thức truy vấn khác (ví dụ tương quan).

+0

Tôi chủ yếu chỉ tò mò, bởi vì tôi thường sử dụng bí danh khi sử dụng 'SELECT' và các câu lệnh như vậy, vì vậy tôi theo bản năng đã làm những gì tôi đã từng sử dụng và tự hỏi tại sao nó không hoạt động đúng cách. –

+28

+1 Trong trường hợp của OP, việc đánh răng có thể không cần thiết, nhưng nó hữu ích với tôi vì tôi đang sử dụng mệnh đề EXISTS, vì vậy tôi phải đặt tên cho bảng để có thể kết hợp cả hai truy vấn với nhau. – Ricardo

+4

Tôi đang tìm kiếm giải pháp khi thực hiện truy vấn SELECT hiện tại và chuyển nó thành câu lệnh DELETE nhanh chóng mà không phải viết lại bí danh. – Alex

52

Lệnh xóa có cú pháp lạ. Nó như sau:

DELETE f FROM foods f WHERE (f.name IN ('chickens', 'rabbits')) 
+3

+1 hữu ích như câu trả lời khác ... – Ricardo

+1

@Ricardo chỉ khác biệt là lược đồ.Nhưng thời gian cho thấy cả hai đã được đăng cùng một lúc. – Mukus

Các vấn đề liên quan