sql - 使用 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)
解决方案
您的删除将如下所示:
DELETE
FROM CTE
WHERE RN > 1;
语句通常DELETE
不指定列,因为它以删除整个记录为目标。另一方面,SELECT
查询需要指定列。所以下面的选择会起作用:
SELECT *
FROM CTE
WHERE RN > 1;
推荐阅读
- php - PHP正则表达式查找并替换以某些字符开头和结尾的字符串的所有出现
- python - python codeforces psets 中的输入
- java-8 - 使用 Java 进行 Tally 集成
- kubernetes-operator - kubernetes 运算符,如何在描述中隐藏属性值
- android - 折叠时的Android多行通知
- c - 在链表中获取头值总是等于NULL?
- swift - 如何查看 URLSession.dataTaskPublisher 的当前进度?
- python-3.x - TypeError: cannot serialize '_io.TextIOWrapper' object--------可能是多处理的问题
- android - 发布版本 Android 中应用程序的不同行为
- python - 如何使用 python 从 MS Access 数据库中检索所有已保存的查询?