在HeidiSQL中执行查询时与only_full_group_by相关的错误

时间:2017-08-17 06:31:23

标签: mysql laravel heidisql

我想在我的数据库中创建一个视图,下面是我的代码和错误消息

  

SELECT列表的表达式#1不在GROUP BY子句中,并且包含非聚合列' ucarer_server.ord_order.request_patient_id"它在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by

不兼容

而且,我也检查了stackoverflow的答案 这是链接

Error related to only_full_group_by when executing a query in MySql

但是,仍然无法为我工作...... 谁能告诉我在哪里可以修复?

select
   ord_order.`request_patient_id`,
   ord_order.`order_id`,
   ord_order.`bundle_id`,
   gvr_caregiver.`surname` as gvr_surname,
   ord_order.`gvr_response_datetime` as 'gvr_response_datetime',
   usr_user.user_id,
   ord_order.`order_status_code_abbr`,
   gvr_caregiver.`first_name` as gvr_first_name,
   IFNULL(ord_order.`bundle_number`, ord_order.`order_number`) as bundleOrOrderNumber,
   ord_order.order_status_last_update_datetime
from ord_order
left join gvr_caregiver on ord_order.srv_caregiver_id = gvr_caregiver.caregiver_id
left join usr_user on usr_user.patient_id = ord_order.request_patient_id
group by bundleOrOrderNumber;

2 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为ord_order.request_patient_id不属于某个群组或属于某个条件的一部分。当您在bundleOrOrderNumber上进行分组时,患者ID可以采用多个值。您需要在所有选定表达式上执行group by或where条件。

请注意,这仅在特定sql模式ONLY_FULL_GROUP_BY时发生。您可以执行select @@sql_mode以查看所有sql模式的存在。如果你删除这个sql模式,你的查询将正常工作,但我不建议,因为有可能查询错误。

答案 1 :(得分:0)

我想这与严格模式有关,所以disable group by check通过修改连接配置。编辑config/database.php并将以下内容添加到选定的连接数组中:

'strict'    => true,
            'modes'     => [
                'STRICT_TRANS_TABLES',
                'NO_ZERO_IN_DATE',
                'NO_ZERO_DATE',
                'ERROR_FOR_DIVISION_BY_ZERO',
                'NO_AUTO_CREATE_USER',
                'NO_ENGINE_SUBSTITUTION'
            ],

它将保持严格模式,但禁用检查组