gpt4 book ai didi

mysql - sql_mode=only_full_group_by 但没有覆盖该选项

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

我正在运行这个 SQL 语句:

SELECT 
*, GROUP_CONCAT(contact) AS contact
FROM
table4, table3, table2, table1
WHERE
table1.id = 1
AND table2.var_id = table1.id
AND table3.var_id = table1.id
GROUP BY
table1.id

出现错误:

GROUP_CONCAT(contact)" doit récupérer les contact de la table4

它之所以有效只是因为我使用了这个:

set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

我的问题是我的请求必须在不同的服务器上使用,因此我需要更稳定的东西,而不仅仅是避免问题。

如何检索相同的结果而不覆盖该选项?

Expression #%u of %s is not in GROUP BY clause and contains nonaggregated column '%s' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

每个表都会重复该错误,如果我添加询问的元素,我的结果将没有串联的联系人,而只有第一个“联系人”结果。

最佳答案

您可以重新构建查询,这样选择所有列就不会导致完整模式错误。像这样的事情:

SELECT *
FROM table1 t1
INNER JOIN table2 t2
ON t1.id = t2.var_id
LEFT JOIN
(
SELECT var_id, GROUP_CONCAT(contact) AS contact
FROM table3
GROUP BY var_id
) t3
ON t2.var_id = t3.var_id

通过在仅涉及该表的子查询中进行聚合,我们可以解决这个问题。我没有坚持您向我们展示的查询,因为它不清楚,但我怀疑您的实际查询甚至与此不同。无论如何,希望这能让您了解可以尝试什么。

关于mysql - sql_mode=only_full_group_by 但没有覆盖该选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42294918/

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