gpt4 book ai didi

mysql - 列表包含非聚合列 'otpallet_pokemonpalet.p.id'

转载 作者:行者123 更新时间:2023-11-29 16:51:14 26 4
gpt4 key购买 nike

有人可以帮我解决以下错误:

In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'otpallet_pokemonpalet.p.id'; this is incompatible with sql_mode=only_full_group_by

SELECT p.id, p.question, 
GROUP_CONCAT(a.answer SEPARATOR ';') AS answers,
GROUP_CONCAT(a.id SEPARATOR ';') AS answers_id
FROM poll p
JOIN poll_answer a ON p.id = a.poll_id
WHERE p.status = 1 AND date_start <= NOW() AND date_end >= NOW()

我尝试仅禁用组模式,但我在 cpanel 中没有 super 访问权限...

最佳答案

禁用 only_full_group_by 模式(符合 ANSI SQL 标准)不是正确的方法。您之所以收到此错误,是因为在 中使用了聚合函数 Group_concat() 以及常规列,例如 p.idp.question >选择,不提及分组依据详细信息。

由于此聚合函数,您将得到一行(没有 Group By)。但 MySQL 无法识别在这一行中返回哪个 p.idp.question。以前的 MySQL 版本(< 5.7)曾经对此很宽松(不符合 ANSI 标准),但值得庆幸的是,他们现在已将更严格的模式作为默认行为。

您确实应该通过添加涉及 p.idp.questionGroup By 子句来消除查询的歧义。

尝试以下操作:

SELECT p.id, p.question, 
GROUP_CONCAT(a.answer SEPARATOR ';') AS answers,
GROUP_CONCAT(a.id SEPARATOR ';') AS answers_id
FROM poll p
JOIN poll_answer a ON p.id = a.poll_id
WHERE p.status = 1 AND date_start <= NOW() AND date_end >= NOW()
GROUP BY p.id, p.question

另外,请检查:SELECT list is not in GROUP BY clause and contains nonaggregated column .... incompatible with sql_mode=only_full_group_by

关于mysql - 列表包含非聚合列 'otpallet_pokemonpalet.p.id',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52803493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com