2012-09-21 6 views
5

Ich habe diese Abfrage. Ich möchte alle Entitäten aus AgentsResultLinks-Table löschen, die keine Verknüpfung zu einer Entität in der Ergebnistabelle haben. Ich möchte eine Lösung mit einer einzigen Abfrage. Ich habe einen Fehler durch '*' verursacht.MSSql (Compact) DELETE-Abfrage mit JOIN

Kann mir jemand helfen, diese Abfrage in einer Vaid-Mssql-Abfrage für eine kompakte Datenbank zu konvertieren? Die Leistung ist sehr wichtig.

+0

[Dieser Link erklärt die Antwort, warum Sie nicht (oder löschen vielleicht) ein aktualisieren Tabelle, die auf SQL Server CE beitreten muss.] (http://stackoverflow.com/a/6934448/491243) –

Antwort

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

diese Abfrage hatte ich versucht, bevor ich diesen Beitrag schrieb. es ist zu langsam. Aber es funktioniert. – Gepro

+0

Wie viele Zeilen in der Tabelle? – jainvikram444

+0

AgentResultsLinks> 500000 und Ergebnisse> 20000 – Gepro

9

Entfernen Sie einfach .* von AgentResultLinks.*

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

Siehe DELETE Syntax: DELETE (Transact-SQL)

See SQLFiddle Example

+0

A habe einen Fehler (in der Nähe von FROM), es ist nicht gültig – Gepro

+0

@Gepro Geben Sie Alias ​​zu Tabelle und verwenden Sie es. Die Antwort wurde aktualisiert. – hims056

+0

Ich habe den gleichen Fehler – Gepro