Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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
从mysql到oracle的Group by-having语句_Mysql_Sql_Oracle - Fatal编程技术网

从mysql到oracle的Group by-having语句

从mysql到oracle的Group by-having语句,mysql,sql,oracle,Mysql,Sql,Oracle,我有这个语句,它在MySQL中运行良好 SELECT r FROM ( SELECT MAX(recno) AS r, f1, f2, f3, f4, f5, f6, f7, f8, CO

我有这个语句,它在MySQL中运行良好

SELECT r
  FROM (  SELECT MAX(recno) AS r,
                 f1,
                 f2,
                 f3,
                 f4,
                 f5,
                 f6,
                 f7,
                 f8,
                 COUNT(*) AS count2
            FROM mytable
        GROUP BY f1,
                 f2,
                 f3,
                 f4,
                 f5,
                 f6,
                 f7,
                 f8
          HAVING (count2 > 1)) tr
但在甲骨文中效果不佳

ORA-00904:无效的标识符计数2

如何使其在Oracle中运行?

只需使用

HAVING COUNT(*) > 1

因为您不能使用别名。

您不需要子查询:

SELECT r
  FROM (  SELECT MAX(recno) AS r,
                 f1,
                 f2,
                 f3,
                 f4,
                 f5,
                 f6,
                 f7,
                 f8,
                 COUNT(*) AS count2
            FROM mytable
        GROUP BY f1,
                 f2,
                 f3,
                 f4,
                 f5,
                 f6,
                 f7,
                 f8
          HAVING (count(*) > 1)) tr
SELECT MAX(recno) as r
FROM mytable
GROUP BY f1, f2, f3, f4, f5, f6, f7, f8
HAVING COUNT(*) > 1;

以这种方式编写查询并不是Oracle特有的。这只是一种更简单的方式来编写在任何数据库中都可以运行的查询。

它看起来与前面的答案非常相似。可能我们在同一时间编写了答案-@Raphael是第一个!:只需将count2>1放在子查询之外的末尾。