关于CTE并从表中物理删除记录

时间:2016-12-23 03:09:02

标签: sql

为了删除重复记录,我在下面的堆栈溢出查询中找到了正常工作。在此查询中,我们将从“a”而不是 View anotherView = inflater.inflate(R.layout.style_fragment_list_request,null,false); 中删除记录。所以我的问题是如何从中删除重复记录物理表虽然我们没有任何tblEmployeeunique密钥。

primary

2 个答案:

答案 0 :(得分:1)

您似乎在SQL Server中使用可更新的CTE。在这种情况下,CTE的行为与视图相同。

视图是可更新的,因为它仅引用一个表并且没有聚合。因此,CTE的作用仅仅是向表中添加列,这些表可以在DELETE语句中引用。

可更新视图的条件在documentation中说明。这些条件与您的CTE相同。

答案 1 :(得分:1)

为了理解这一点,让我们考虑一下临时表和CTE之间的区别。

当我们使用临时表时,此临时表将保存在Tempdb数据库中。所以,它只是表tblEmployee的副本。无论你对临时表做出什么改变,它都不会影响tblEmployee

但是,当你使用cte时,它实际上指向同一个表本身。这就是为什么,如果你从cte中删除它,它也会影响tblEmployee。 CTE只不过是一次性观点。