【问题标题】:SQL ERROR When running query运行查询时出现 SQL 错误
【发布时间】:2017-04-28 12:13:26
【问题描述】:

我一直在尝试执行下面的代码,但它没有运行。 SQLFiddle 给出了

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的 '.'EO' AS 'EO','EF'.'AC' AS 'AC','EO'' 附近使用正确的语法

我不知道我做错了什么。

SELECT DISTINCT 'EO'.'EO' AS 'EO', 'EF'.'AC' AS 'AC', 'EO'.'WO' AS 'WO', 'EO'.'WOF' AS 'WOF', 'EF'.'PN_SN' AS 'PN_SN', 'EC'.'CD' AS 'CD', 'EF'.'PN' AS 'PN', 'EO'.'EOC' AS 'EOC', 'EO'.'STAT' AS 'STAT', 'EF'.'OVRD' AS 'OVRD', 'EF'.'SEL' AS 'SEL', 'EF'.'ED' AS 'ED', 'EF'.'SCHED' AS 'SCHED', 'EF'.'SAD' AS 'SAD', 'EF'.'SA' AS 'SA', 'EO'.'EOD' AS 'EOD' FROM EO, EC, EF WHERE ( 'EO'.'EO' = 'EC'.'EO' ) AND ( 'EF'.'PSN' = 'EC'.'PSN' ) AND ( 'EO'.'WB' = 'Y' ) AND ( 'EC'.'CONT' = 'W & B' ) ; SELECT 'EC'.'RSTD' AS 'RSTD' FROM EC RIGHT JOIN EF ON ( 'EF'.'EO' = 'EC'.'EO' ) ON ( 'EF'.'AC' = 'EC'.'AC' ) ON ( 'EF'.'PN' = 'EC'.'PN' ) ON ( 'EF'.'PSN' = 'EC'.'PSN' )

【问题讨论】:

  • 请注意——Oracle 还是 MySQL?为什么在对象名称周围有单引号?
  • 您已将此标记为 Oracle,并带有一条引用 MySQL 的消息。如果是 Oracle,则提供您运行的代码(上述代码不会在 Oracle 中运行)并向我们展示您得到的 Oracle 错误。

标签: oracle select join syntax


【解决方案1】:

单引号 - ' - 用于文字。使用双引号 - " - 作为标识符...

 SELECT
    "EC"."RSTD"
    FROM EC RIGHT JOIN EF
      ON ( "EF"."EO" = "EC"."EO" ) 
      ON ( "EF"."AC" = "EC"."AC" ) 
      ON ( "EF"."PN" = "EC"."PN" ) 
      ON ( "EF"."PSN' = "EC"."PSN" )

...或者,更好的是,完全省略它们:

 SELECT
    EC.RSTD
    FROM EC RIGHT JOIN EF
      ON ( EF.EO = EC.EO ) 
      ON ( EF.AC = EC.AC ) 
      ON ( EF.PN = EC.PN ) 
      ON ( EF.PSN = EC.PSN )

在适当的时候显然保留单引号,例如将列与文字进行比较:

where EO.WB = 'Y' 

另请注意,当您不更改列名时,没有必要使用列别名:select ec.rstd as rstd 是多余的,而且确实很烦人。保留它们用于重命名列,例如select ec.rstd as my_new_col_name

【讨论】:

    猜你喜欢
    • 2019-01-03
    • 2020-05-09
    • 2016-11-11
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多