0

我用mysql测试它可以工作,但是当我使用Oracle时,出现这个错误:

ORA-00979: 不是 GROUP BY 表达式

这是我的代码:


    <?php
$sqlSelect = "SELECT * FROM policy order by policyprogress_id asc";
if (isset($_GET['batch']) && !empty($_GET['batch'])) {
  $batch = $_GET['batch'];
  $sqlSelect = "SELECT * FROM policy where batch = '".$batch."' group by type order by policyprogress_id asc";
  if (isset($_GET['type']) && !empty($_GET['type'])) {
    $type = $_GET['type'];
    $sqlSelect = "SELECT * FROM policy where batch = '".$batch."' and type = '".$type."' order by policyprogress_id asc";
  }
}
4

1 回答 1

1

您总共有 3 个查询

-- 1
SELECT * FROM policy order by policyprogress_id asc ;

-- 2
SELECT * FROM policy where batch = '".$batch."' 
group by type order by policyprogress_id asc;

 -- 3
SELECT * FROM policy where batch = '".$batch."' and type = '".$type."' 
order by policyprogress_id asc;

您的第二个查询将在您正在做的SELECT *同时使用GROUP BY TYPE.

GROUP BY查询中,SELECT子句只能包含分组列和聚合函数。如果您尝试在SELECT子句中使用分组列以外的列,则 Oracle 将抛出ORA-00979: not a GROUP BY expression错误。

于 2020-03-24T05:08:33.930 回答