【发布时间】:2014-02-20 19:47:10
【问题描述】:
如何将此查询转换为 Oracle group By。我在将应用程序从 MySQL 迁移到 Oracle 数据库时遇到了这个问题。
SELECT j.id AS j__id
, j.processing_office_id AS j__processing_office_id
, j.lga_id AS j__lga_id
, j.created_at AS j__created_at
, j.updated_at AS j__updated_at
, j.created_by AS j__created_by
, j.updated_by AS j__updated_by
, j.deleted_at AS j__deleted_at
, t.name AS t__0
, t3.id AS t3__1
, t3.name AS t3__2
FROM join_processing_office_state_lga j
LEFT
JOIN tbl_lga t
ON j.lga_id = t.id
AND t.deleted_at IS NULL
AND t.active_flag = 'Y'
LEFT
JOIN tbl_procesing_office t2
ON j.processing_office_id = t2.id
LEFT
JOIN tbl_state t3
ON t.state_id = t3.id
AND t3.deleted_at IS NULL
AND t3.active_flag = 'Y'
WHERE t2.active_flag = 'Y'
AND t2.active_flag = 'Y'
AND j.deleted_at IS NULL
GROUP
BY t.state_id
ORDER
BY t3.name
【问题讨论】:
-
阅读这个:rpbouman.blogspot.de/2007/05/debunking-group-by-myths.html 和这个:mysqlperformanceblog.com/2006/09/06/… 以了解您的 MySQL 查询出了什么问题。
-
您不能只在一个列上运行 group by。如果您没有聚合列,则需要按输出中的所有列进行分组。无论哪种方式,您仍然必须按除聚合列之外的所有列进行分组,所以...您必须修改输出,或编写另一个查询。