2012-09-21 12 views
5

Tengo esta consulta. Quiero eliminar todas las entidades de AgentsResultLinks-Table, que no tienen un enlace a una entidad en Results-Table. Quiero una solución con una sola consulta. Recibí un error causado por '*'.MSSql (compacto) DELETE-Query con JOIN

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

¿Alguien me puede ayudar a convertir esta consulta en una consulta vaid mssql para la base de datos compacta? El rendimiento es muy importante.

+0

[Este enlace explica por qué la respuesta no se puede actualizar (o eliminar tal vez) una tabla que se ha unido en SQL Server CE.] (http://stackoverflow.com/a/6934448/491243) –

Respuesta

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

esta consulta que había intentado antes de escribir esta publicación. es muy lento pero funciona. – Gepro

+0

¿Cuántas filas hay en la mesa? – jainvikram444

+0

AgentResultsLinks> 500000 y Results> 20000 – Gepro

9

Basta con retirar .* de AgentResultLinks.*

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

Ver DELETE sintaxis: DELETE (Transact-SQL)

See SQLFiddle Example

+0

A Obtuvo un error (cerca de FROM), no es válido. – Gepro

+0

@Gepro. Asigne alias a la tabla y úselo. Actualizado la respuesta. – hims056

+0

tengo el mismo error – Gepro