Teradata中如何将CTE查询结果插入表并解决对应语法报错
错误原因
CTE(公共表表达式)的作用域仅限定为紧随其定义之后的第一条SQL语句。你将CTE定义和INSERT操作拆分为两个独立的执行单元,CTE定义完成后没有直接关联使用它的语句,就会触发语法校验失败,提示expects a select and not an insert.。
解决方法
将CTE定义和INSERT操作合并为同一段执行语句即可,正确代码如下:
WITH cte AS ( SELECT TOP 10 * FROM yourtable ) INSERT INTO newtable SELECT * FROM cte;
插入操作执行完成后,再单独执行查询语句验证结果即可:
SELECT * FROM newtable;
补充说明
- 上述代码中的
TOP 10是SQL Server、Access等数据库的分页写法,如果你使用的是MySQL,需替换为LIMIT 10;如果是Oracle,需替换为FETCH FIRST 10 ROWS ONLY,匹配你所使用的数据库语法即可正常执行。
内容的提问来源于stack exchange,提问作者ctk
相关产品推荐
相关产品推荐

