【发布时间】:2014-10-30 10:26:49
【问题描述】:
我有一个带有Union-Statement 的查询,我在其中检索table 订单的Requester 和Provider Column 中存在的所有UserIds。
SELECT Requester
FROM Orders
UNION
SELECT Provider
FROM Orders
This query yields some 7000 results in under a second.
现在我有一个名为“Persons”的表,其中UserIds 是linked to the persons data。
使用上面的查询,我想清理这个表,只保留上面联合语句结果中存在的 UserId。
所以我做了以下删除语句:
DELETE FROM
Persons
WHERE
UserId NOT IN(
SELECT Requester
FROM Orders
UNION
SELECT Provider
FROM Orders
)
然而,这个查询拒绝执行(即使在等待 5 分钟之后)。我的查询失败的原因可能是什么?我这里的子查询中不允许使用UNION作为Statement吗?
注意: 关注MySQL DELETE FROM with UNION subquery by IN condition 并没有为我解决问题。
【问题讨论】:
-
当您将 'delete from' 替换为 'select * from' 时会发生什么?另一种方法 - 将联合查询的结果存储在临时表中并在“删除”查询中使用。
-
慢得要命。而是产生了结果。可能是因为我过度扩展了
Instatement?
标签: sql sql-server-2008