2012-09-21 9 views
5

Ho questa query. Voglio eliminare tutte le entità da AgentsResultLinks-Table, che non hanno un link a un'entità in Results-Table. Voglio una soluzione con una singola query. Ho ricevuto un errore causato da '*'.MSSql (Compatta) DELETE-Query con JOIN

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

Qualcuno può aiutarmi a convertire questa query in una query mssql vaid per database compatto? La performance è molto importante.

+0

[Questo link spiega la risposta perché non è possibile aggiornare (o cancellare forse) una tabella che è stata aggiunta su SQL Server CE.] (http://stackoverflow.com/a/6934448/491243) –

risposta

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

questa query che avevo provato prima ho scritto questo post. è troppo lento. ma funziona – Gepro

+0

quante righe ci sono nella tabella? – jainvikram444

+0

AgentResultsLinks> 500000 e risultati> 20000 – Gepro

9

Basta togliere .* da AgentResultLinks.*

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

Vedi DELETE sintassi: DELETE (Transact-SQL)

See SQLFiddle Example

+0

A ricevuto un errore (vicino a FROM), non è valido – Gepro

+0

@Gepro Dà alias alla tabella e usarlo. Aggiornata la risposta. – hims056

+0

ho lo stesso errore – Gepro