Tôi muốn xóa các hàng khỏi biến bảng SQL Server 2000/2005 dựa trên sự hiện diện của các hàng khác trong cùng một bảng (xóa tất cả 0 hàng đếm nếu không phải là 0 hàng tồn tại cùng ngày). Dưới đây là một ví dụ đơn giản rằng chỉ cần xóa các dòng bổ sung đầu tiên:Biến Bảng với Bí danh trong Tuyên bố Xóa Từ
declare @O table (
Month datetime,
ACount int NULL
)
insert into @O values ('2009-01-01', 0)
insert into @O values ('2009-01-01', 1)
insert into @O values ('2008-01-01', 1)
insert into @O values ('2007-01-01', 0)
delete from @O o1
where ACount = 0
and exists (select Month from @O o2 where o1.Month = o2.Month and o2.ACount > 0)
Vấn đề là tôi không thể có được SQL server để chấp nhận bí danh o1 biến của bảng (và tôi nghĩ rằng một bí danh là cần thiết do sự "o1.Month = o2.Month
" tên trường trùng khớp). Lỗi này là:
Msg 102, Level 15, State 1, Line 11
cú pháp sai gần 'o1'.
Chà, không biết về cú pháp này! Nếu bạn không dán hình ảnh, tôi đã từ chối nó là không hợp lệ. Điều này làm việc trên SQL2000 hoặc chỉ trên SQL Server 2005? Tôi đang ở nhà ngay bây giờ nên không thể xác minh trực tiếp. –
Nó sẽ hoạt động trên SQL 2k/2k5/2k8 (nó đã được thử nghiệm trên 2k8 trên ảnh chụp màn hình) - Không bao giờ xử lý với SQL 7 vì vậy không chắc chắn về 7 – Sung