2012-09-21 27 views
5

Tôi có truy vấn này. Tôi muốn xóa tất cả các thực thể khỏi AgentsResultLinks-Table, không có liên kết đến một thực thể trong Bảng kết quả. Tôi muốn một giải pháp với một truy vấn duy nhất. Tôi gặp lỗi do '*' gây ra.MSSql (Nhỏ gọn) XÓA-Truy vấn với JOIN

DELETE AgentResultLinks.* 
FROM AgentResultLinks LEFT JOIN Results 
ON AgentResultLinks.ResultID = Results.ID 
WHERE Results.ID IS NULL 

Ai đó có thể giúp tôi để chuyển đổi truy vấn này trong một truy vấn MSSQL Vaid cho cơ sở dữ liệu nhỏ gọn? Hiệu suất là rất quan trọng.

+0

[link này giải thích câu trả lời tại sao bạn không thể cập nhật (hoặc xóa có thể) một bảng đã tham gia vào nó trên SQL Server CE.] (http://stackoverflow.com/a/6934448/491243) –

Trả lời

4
DELETE FROM AgentResultLinks 
where ResultID not in(select distinct ID from Results) 
+1

truy vấn này tôi đã thử trước khi tôi viết bài đăng này. nó quá chậm. nhưng nó đã có tác dụng. – Gepro

+0

có bao nhiêu hàng trong bảng? – jainvikram444

+0

AgentResultsLinks> 500000 và Kết quả> 20000 – Gepro

9

Chỉ cần loại bỏ .* từ AgentResultLinks.*

DELETE Agent 
FROM AgentResultLinks Agent 
LEFT JOIN Results R 
     ON Agent.ResultID = R.ID 
WHERE R.ID IS NULL; 

Xem DELETE cú pháp: DELETE (Transact-SQL)

See SQLFiddle Example

+0

A có một lỗi (gần FROM), nó không hợp lệ – Gepro

+0

@Gepro Đưa bí danh vào bảng và sử dụng nó. Đã cập nhật câu trả lời. – hims056

+0

tôi gặp lỗi tương tự – Gepro

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