代码之家  ›  专栏  ›  技术社区  ›  tirenweb

SQL:有新词语法错误的子句

  •  1
  • tirenweb  · 技术社区  · 14 年前

    我有这个条款:

    "Select *
    From
    (
      Select sedi_i18n.*,
      0 orden
        From table sedi_i18n
       Where culture= 'italiano'
       Union
      Select sedi_i18n.*, 1 orden
        From table sedi_i18n
      Where culture<> 'italiano'  
    )
    Order By orden, culture";
    

    但我得到了这个错误:

    sqlstate[42000]:语法错误或 访问冲突:1064 SQL语法错误;请检查 与你的MySQL相对应的手册 正确语法的服务器版本 使用“桌旁”Sedi i18n,其中 Culture='Italiano'工会选择 Sedi_i18n.*,1或'at line 6

    知道吗?

    当做

    贾维

    5 回复  |  直到 14 年前
        1
  •  2
  •   user359040    14 年前

    您需要在括号后面有一个子查询别名,并删除单词表,如下所示:

    Select *
    From
    (
      Select sedi_i18n.*,
      0 orden
        From sedi_i18n
       Where culture= 'italiano'
       Union
      Select sedi_i18n.*, 1 orden
        From sedi_i18n
      Where culture<> 'italiano'  
    ) SQ
    Order By orden, culture;
    
        2
  •  0
  •   Haim Evgi    14 年前
    0 orden
    

    需要

    0 , orden
    

    同样的问题

    1 orden
    
    1, orden
    

    同时修复@stivi备注

        3
  •  0
  •   Stiivi    14 年前

    乍一看,这似乎是个问题:

    From table sedi_i18n
    

    应该是:

    From sedi_i18n
    

    (没有“表”字)

    第6行和第10行相同。

        4
  •  0
  •   johnny    14 年前

    你的陈述中需要“表格”这个词吗?我建议你把工会带出去,不带着它去运作,看看你能得到什么。把它分解,看看你真正的错误在哪里。

        5
  •  0
  •   Joe Stefanelli    14 年前

    在查询中去掉“table”这个词。同时为内部查询创建别名。

    "Select *
    From
    (
      Select sedi_i18n.*,
      0 orden
        From sedi_i18n
       Where culture= 'italiano'
       Union
      Select sedi_i18n.*, 1 orden
        From sedi_i18n
      Where culture<> 'italiano'  
    ) a
    Order By orden, culture";