首页 > 解决方案 > 使用 CTE 时语法不正确

问题描述

我正在尝试在表中查找双记录。
我的目标是先检查结果,如果没问题,然后删除双打。

所以想法是使用 CTE 来查找所有双打,并忽略原始记录

WITH CTE AS(
   SELECT ChassisID, FileName, OpdrachtID,
      RN = ROW_NUMBER() OVER (PARTITION BY ChassisID, FileName, OpdrachtID ORDER BY ChassisID)
   FROM dbo.tblChassisVMac
)
SELECT FROM CTE 
WHERE RN > 1

在检查一切是否正确后,我想SELECT用 a替换DELETE

但我不断收到此错误:

关键字“FROM”附近的语法不正确

我可能错过了一些微不足道的东西,但我只是看不到它

SQL Server 2014 (SP2)

标签: sqlsql-servertsql

解决方案


您的删除将如下所示:

DELETE
FROM CTE
WHERE RN > 1;

语句通常DELETE不指定列,因为它以删除整个记录为目标。另一方面,SELECT查询需要指定列。所以下面的选择会起作用:

SELECT *
FROM CTE
WHERE RN > 1;

推荐阅读