在 HeidiSQL 中执行查询时出现与 only_full_group_by 相关的错误
Error related to only_full_group_by when executing a query in HeidiSQL
我想在我的数据库中创建一个视图,下面是我的代码和错误信息
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ucarer_server.ord_order.request_patient_id" which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
另外,我也在 Whosebug 上查看了答案
这是 link
但是,我还是不行...
谁能告诉我哪里可以修复?
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;
我想这与严格模式有关,所以 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'
],
它将保持严格模式,但禁用 group by 检查
发生这种情况是因为 ord_order.request_patient_id
不是 group by 的一部分或 where 条件的一部分。当您在 bundleOrOrderNumber
上进行分组时,患者 ID 可以采用许多值。您需要对所有选定的表达式执行 group by 或 where 条件。
请注意,这仅在特定 sql 模式 ONLY_FULL_GROUP_BY
时发生。您可以执行 select @@sql_mode
以查看所有 sql 模式的存在。如果您删除此 sql 模式,您的查询将正常工作,但我不建议这样做,因为查询有可能出错。
我想在我的数据库中创建一个视图,下面是我的代码和错误信息
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ucarer_server.ord_order.request_patient_id" which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
另外,我也在 Whosebug 上查看了答案 这是 link
但是,我还是不行... 谁能告诉我哪里可以修复?
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;
我想这与严格模式有关,所以 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'
],
它将保持严格模式,但禁用 group by 检查
发生这种情况是因为 ord_order.request_patient_id
不是 group by 的一部分或 where 条件的一部分。当您在 bundleOrOrderNumber
上进行分组时,患者 ID 可以采用许多值。您需要对所有选定的表达式执行 group by 或 where 条件。
请注意,这仅在特定 sql 模式 ONLY_FULL_GROUP_BY
时发生。您可以执行 select @@sql_mode
以查看所有 sql 模式的存在。如果您删除此 sql 模式,您的查询将正常工作,但我不建议这样做,因为查询有可能出错。