2012-09-21 8 views
5

Mam to zapytanie. Chcę usunąć wszystkie podmioty z AgentsResultLinks-Table, które nie mają łącza do encji w tabeli wyników. Chcę rozwiązania z jednym zapytaniem. Wystąpił błąd spowodowany przez "*".MSSql (Kompaktowy) DELETE-zapytanie z JOIN

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

Czy ktoś może mi pomóc, aby przekonwertować to zapytanie w zapytaniu mssql dla kompaktowej bazy danych? Wydajność jest bardzo ważna.

+0

[Ten link wyjaśnia odpowiedź, dlaczego nie można aktualizować (lub usuwanie może) A tabela, która dołączyła do niej na SQL Server CE.] (http://stackoverflow.com/a/6934448/491243) –

Odpowiedz

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

to zapytanie, które próbowałem, zanim napisałem ten post. jest zbyt wolny. ale działa. – Gepro

+0

Ile rzędów jest w stole? – jainvikram444

+0

AgentResultsLinks> 500000 i wyniki> 20000 – Gepro

9

Wystarczy usunąć .* z AgentResultLinks.*

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

Zobacz DELETE składnię: DELETE (Transact-SQL)

See SQLFiddle Example

+0

A Wystąpił błąd (blisko FROM), nie jest ważny – Gepro

+0

@Gepro Podaj alias do tabeli i użyj go. Zaktualizowano odpowiedź. – hims056

+0

Mam ten sam błąd – Gepro