从mysql到oracle的Group by-having语句
我有这个语句,它在MySQL中运行良好从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
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放在子查询之外的末尾。