当前位置: 首页 > 知识库问答 >
问题:

DB2 CTAS令牌错误

井逸明
2023-03-14
      CREATE TABLE MY_SCRATCH.LC$U7OB81478732948714_zero_to_3 AS (
      WITH two AS (SELECT id AS the_num FROM users WHERE id = 2)
        ,  one_two AS (
        SELECT id AS the_num FROM users WHERE id = 1
        UNION ALL
        SELECT * FROM two tmp
      )
        ,  zero_one_two AS (
        SELECT id-7 AS the_num FROM users where id = 7
        UNION ALL
        SELECT * FROM one_two tmp

      )
        SELECT * FROM zero_one_two tmp
        UNION ALL
        SELECT id AS the_num FROM users WHERE id = 3
      ) WITH DATA

但是,我收到以下错误:

“my_error”:“SQL错误:derived_table zero_to_3创建失败:CREATE TABLE as select:com.ibm.DB2.jcc.am.sqlsyntaxerrorexception:DB2 SQL错误:sqlcode=-104,sqlstate=42601,sqlerrmc=as;rO_to_3\”(\n有两个;join,driver=4.16.53“

根据DB2文档,该错误是由于以下原因造成的:

在SQL语句中出现符号“token”的地方检测到语法错误。可能合法的符号列表显示了一些替换的符号,如果语句的前面部分完全正确的话,这些符号在这一点上可能是正确的。

所以我在RazorSQL中运行上面的查询,它抛出了同样的错误。不太确定令牌问题在哪里

共有1个答案

子车雅珺
2023-03-14

不能使用通用表表达式。如果您查看create table的语法(下图针对您的具体问题进行了删节):

>>-CREATE TABLE--table-name------------------------------------->

>--+-----------------------+--AS--(--fullselect--)-------------->
   |    .-,-----------.    |                         
   |    V             |    |                         
   '-(----column-name-+--)-'                         

>--+-WITH NO DATA-+---------------------------------------------|
   '-WITH DATA----'   

fullselect是full select查询的一部分,但它不包括公共表表达式。公共表表达式是SELECT语句的一部分。

使用嵌套表表达式而不是通用表表达式重写查询是可能的,但是在示例查询中很难说明这一点,因为您甚至根本不需要通用表表达式。您的查询可以用一种简单得多的方式编写,如:

CREATE TABLE MY_SCRATCH.LC$U7OB81478732948714_zero_to_3 AS (
    select id as the_num from users where id = 2
    union all
    select id as the_num from users where id = 1
    union all
    select id-7 as the_num from users where id = 7
    union all
    select id as the_num from users where id = 3
)
   WITH DATA;
 类似资料:
  • 所以我在第37行的else if中出现了错误,我不知道为什么会发生这种情况。IDE说:“令牌”else“语法错误,删除这个令牌”。多谢了。

  • 问题内容: 我需要验证一个Google id_token,其中一个步骤涉及检查令牌签名。 首先,我从以下网址获取证书:https : //www.googleapis.com/oauth2/v2/certs,并从证书中提取模数(n)和指数(e)并生成公钥,然后分解令牌(标题,有效负载和摘要),然后将解码后的内容与Google pKey +摘要一起发送到rsa函数。 我陷入了这个验证错误: 这是代码

  • 问题内容: 我尝试了以下简单的JavaScript代码: 例如,在Chrome控制台中,这将返回 SyntaxError:意外令牌: 我在JSONLint上尝试了JSON ,它是有效的。 您看到错误了吗? 问题答案: FWIW,改为使用。比。

  • 问题内容: 尝试解析此JSON字符串时出现错误 扩展的字符串对象: 问题答案: 验证您的json字符串。如果可以,请尝试以下操作:

  • 问题内容: 这是我的代码一直在给问题。 我不知道为什么要这么做。 编辑: 我已根据您的要求进行了编辑,以查看更多代码。 问题答案: 您要在课程外声明一个字段: 它必须放在一个类中: