With TruncateCTE(Empid,Name)
as
(
select *
from truncatetest
where Empid=10
)
truncate table TruncateCTE
但它显示错误:
关键字' truncate'附近的语法不正确。 请帮我解决这个问题......
答案 0 :(得分:2)
基本上,TRUNCATE
是DDL操作,这意味着删除行的 ALL 。您无法删除某些行,并在表格中留下其他行。
并且,WITH
子句可以作为内联视图处理或解析为临时表。因此,截断它是没有意义的。
所以,你的查询完全没有意义。
如果您要从表中删除某些行,那么DELETE
就是它的意思。但是,由于混合子查询工厂和截断,整个问题无效。
答案 1 :(得分:1)
我想你只想要delete
:
delete from truncatetest
where Empid = 10;
在大多数数据库中,CTE只是子查询,您不能将子查询与truncate
一起使用。坚持使用好的老式delete
陈述。
请注意,Postgres确实允许CTE中的一些DDL语句(尽管不是我所知道的Oracle),但我仍然认为它不允许truncate
。