如何在oracle和mysql中解决此错误
我在where子句中遇到了这个问题,sql告诉我这是无效的sql语句。rowname是datetime。我的if语句有点不对劲,我想不出来。希望你们能帮我。。。谢谢 注意:我设法以更清晰的版本修改了代码,希望你们能帮助我(我在两个表中有一个select查询) 在哪里如何在oracle和mysql中解决此错误,mysql,oracle,Mysql,Oracle,我在where子句中遇到了这个问题,sql告诉我这是无效的sql语句。rowname是datetime。我的if语句有点不对劲,我想不出来。希望你们能帮我。。。谢谢 注意:我设法以更清晰的版本修改了代码,希望你们能帮助我(我在两个表中有一个select查询) 在哪里 如果不是选择语句语法的一部分。它是语言更高层次的一部分。因此,不能将其包含在where语句中。你想要的是: WHERE rowname >= coalesce((select max(rowname) from tbl1),
如果不是选择语句语法的一部分。它是语言更高层次的一部分。因此,不能将其包含在where
语句中。你想要的是:
WHERE rowname >= coalesce((select max(rowname) from tbl1), (select min(rowname) from tbl2), rowname)) and
sysdate
另外,sysdate
是Oracle的定义。MySQL通常会使用now()
。它们都可能支持ANSI标准CURRENT\u TIMESTAMP
您的列真的命名为“rowname”吗?您应该使用COALESCE()
,它返回第一个非空argumentInline if语句(至少在mysql中。我不使用$Oracle$)。简单的例子,IF(value>100100,value)
第二行也应该是rowname,SQL标准来自ISO,而不是ANSI。我想在mysql和oracle中都这样做,问题是我想在where子句中加一个条件,如果rowname为null,结果将是min time,否则为max time
WHERE rowname >= coalesce((select max(rowname) from tbl1), (select min(rowname) from tbl2), rowname)) and
sysdate