Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在oracle和mysql中解决此错误_Mysql_Oracle - Fatal编程技术网

如何在oracle和mysql中解决此错误

如何在oracle和mysql中解决此错误,mysql,oracle,Mysql,Oracle,我在where子句中遇到了这个问题,sql告诉我这是无效的sql语句。rowname是datetime。我的if语句有点不对劲,我想不出来。希望你们能帮我。。。谢谢 注意:我设法以更清晰的版本修改了代码,希望你们能帮助我(我在两个表中有一个select查询) 在哪里 如果不是选择语句语法的一部分。它是语言更高层次的一部分。因此,不能将其包含在where语句中。你想要的是: WHERE rowname >= coalesce((select max(rowname) from tbl1),

我在where子句中遇到了这个问题,sql告诉我这是无效的sql语句。rowname是datetime。我的if语句有点不对劲,我想不出来。希望你们能帮我。。。谢谢

注意:我设法以更清晰的版本修改了代码,希望你们能帮助我(我在两个表中有一个select查询)

在哪里


如果
不是
选择
语句语法的一部分。它是语言更高层次的一部分。因此,不能将其包含在
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