为什么 delete 语句的限制超出了它们的选择对应项?
我没有被卡住,因为这个问题很容易解决,但我宁愿修复我的理解,也不愿继续使用解决方法。
例如,我有一个带有字段 V1 和 V2 的无向边缘列表。不幸的是,在创建表时,我引入了重复项(即 V1 -> V2 和 V2 -> V1)。为了识别重复,我运行了查询:
SELECT t1.V1, t1.V2
FROM table t1
WHERE t1.V1 > t1.V2
and EXISTS (
SELECT *
FROM table t2
WHERE t2.V1 = t1.V2
and t2.V2 = t1.V1 )
因为这从表中返回了一组不错的行,所以我想我应该能够用 delete 替换选择行并重新运行相同的查询。然而,Sql server 生气了,而是给了我红色的字母。一次是关于语法,然后是一些关于绑定多部分标识符的内容。
我设法将选择存储在一个表变量中并完成删除 - 这没关系,但我原来的方法有什么问题,我可以用一个 SQL 语句完成它吗?