【问题标题】:Missing Keyword ORA-00905缺少关键字 ORA-00905
【发布时间】:2016-02-22 20:58:21
【问题描述】:

请告诉我这个查询中的语法问题是什么

SELECT sde
FROM TABLE_EW  sde , CASE_W  spr, DOCUMENT swp 
JOIN swp.id, swp.YEAR  ON (swp.id = sde.ID_DOCUMENT) 
JOIN spr.ID, spr.STATE, spr.NUMBER ON (spr.ID_DOCUMENT = swp.ID)  
WHERE sde.IDENT_TABLEEW LIKE '122337456464' 
AND swp.YEAR LIKE 2015;

SQLDeleoper点问题到From Line

【问题讨论】:

  • 您的查询有很多问题,不清楚从哪里开始
  • 天哪,你是不是在认真地把显式和隐式连接混为一谈?
  • 可能连接条件太少。
  • LIKE 用于字符串值。 AND swp.YEAR LIKE 2015 无效且没有意义。 LIKE 没有任何通配符也没有意义。

标签: sql oracle


【解决方案1】:

我认为这是您要编写的查询:

SELECT sde.*,swp.id, swp.YEAR,spr.ID, spr.STATE
FROM TABLE_EW  sde 
JOIN DOCUMENT swp ON  (swp.id = sde.ID_DOCUMENT)
JOIN CASE_W spr ON (spr.ID_DOCUMENT = swp.ID)  
WHERE sde.IDENT_TABLEEW = '122337456464' 
AND swp.YEAR = 2015;

如 cmets 中所述,您的 SQL 代码中有 很多 错误。 您同时使用隐式和显式连接,避免使用隐式连接语法并仅使用正确的语法,如我的示例。

另外,只有在选择中你可以指定你想要的列,我猜你一直在尝试做的是

JOIN spr.ID, spr.STATE -> wanted this columns.

你应该把它们写在选择部分。

另一个问题是连接条件,你要么使用隐式连接,(来自 table,table2,table3..)然后连接条件在 where 子句中,或者你使用显式连接然后条件在 ON 子句中.不能同时使用!

另一个问题是 LIKE 的不必要使用。与完全匹配进行比较时,请使用等号。

【讨论】:

  • 这不太可能是查询(我猜可能),但即使是这样仍然有问题。你为什么要引用一个数字?为什么要使用 LIKE?
  • 谢谢你,你帮了很多忙
猜你喜欢
  • 2012-07-26
  • 1970-01-01
  • 2023-01-02
  • 2019-01-18
  • 1970-01-01
  • 2018-06-18
  • 2016-03-12
  • 1970-01-01
相关资源
最近更新 更多