【问题标题】:MSSql (Compact) DELETE-Query with JOINMSSql (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 查询吗? 性能非常重要。

【问题讨论】:

标签: sql left-join sql-server-ce sql-delete


【解决方案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

【讨论】:

【解决方案2】:
DELETE FROM AgentResultLinks 
where ResultID not in(select distinct ID from Results)

【讨论】:

  • 在写这篇文章之前我已经尝试过这个查询。它太慢了。但它有效。
  • AgentResultsLinks > 500000 和结果 > 20000
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-21
  • 2021-09-28
  • 2013-06-29
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
相关资源
最近更新 更多