MSSql (Compact) DELETE-Query with JOIN
Posted
技术标签:
【中文标题】MSSql (Compact) DELETE-Query with JOIN【英文标题】: 【发布时间】:2012-09-21 07:26:07 【问题描述】:我有这个问题。我想从 AgentsResultLinks-Table 中删除所有没有指向 Results-Table 中实体的链接的实体。我想要一个单一查询的解决方案。 我收到由“*”引起的错误。
DELETE AgentResultLinks.*
FROM AgentResultLinks LEFT JOIN Results
ON AgentResultLinks.ResultID = Results.ID
WHERE Results.ID IS NULL
有人可以帮我将此查询转换为紧凑型数据库的 vaid mssql 查询吗? 性能非常重要。
【问题讨论】:
This link explains the answer why you can't update (or delete maybe) a table that has join on it on SQL Server CE. 【参考方案1】:只需从AgentResultLinks.*
中删除.*
DELETE Agent
FROM AgentResultLinks Agent
LEFT JOIN Results R
ON Agent.ResultID = R.ID
WHERE R.ID IS NULL;
参见DELETE
语法:DELETE (Transact-SQL)
See SQLFiddle Example
【讨论】:
@Gepro 为表提供别名并使用它。更新了答案。 解析查询时出错。 [令牌行号= 2,令牌行偏移量= 1,错误令牌= FROM] 您使用的是同一个查询吗?看看this SQLFiddle example。我没有收到任何错误。 This link explains the answer why you can't update (or delete maybe) a table that has join on it on SQL Server CE.【参考方案2】:DELETE FROM AgentResultLinks
where ResultID not in(select distinct ID from Results)
【讨论】:
在写这篇文章之前我已经尝试过这个查询。它太慢了。但它有效。 AgentResultsLinks > 500000 和结果 > 20000以上是关于MSSql (Compact) DELETE-Query with JOIN的主要内容,如果未能解决你的问题,请参考以下文章