mysql - 选择在一台机器上工作而不是在另一台机器上工作时非按列分组

标签 mysql group-by mysql-error-1055

我有两台机器,我正在尝试在两台机器上运行下面提到的查询。

SELECT 
    bdm.brand_id AS brandId,
    bdm.brand_name AS brandName,
    fse.seller_code AS dummySeller,
    bdm.feed_source AS feedSource
FROM
    `brand_distributor_mapping` bdm
        JOIN
    `feed_source` fse ON bdm.feed_source = fse.name
GROUP BY bdm.brand_id ,bdm.feed_source;

它在一台机器上运行,但在另一台机器上给出错误代码 1055。

两台机器的Mysql版本:

  1. 不工作 - mysql Ver 14.14 Distrib 5.6.19,适用于 Linux (x86_64),使用 EditLine 包装器。
  2. 工作 - mysql Ver 14.14 Distrib 5.5.53,适用于 debian-linux-gnu (x86_64),使用 readline 6.3

最佳答案

这一定是由于SQL_MODE默认设置为ONLY_FULL_GROUP_BY所致。

最好始终通过在查询中聚合来练习完整的组。否则,尽管 MySQL 根据 SQL_MODE 集接受并检索结果,但它们可能不正确。

您可能想要更改您的 group by 子句,如下所示:

GROUP BY
    bdm.brand_id,
    bdm.brand_name,
    fse.seller_code,
    bdm.feed_source

引用:MySQL Documentation on ONLY_FULL_GROUP_BY

关于mysql - 选择在一台机器上工作而不是在另一台机器上工作时非按列分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41888583/

相关文章:

mysql - 在 MySql 中执行查询时与 only_full_group_by 相关的错误

mysql - 带日期的 Cron 文件名正在传递 Y_m_d 而不是实际日期

php - 使用计数还是有一个可以计数的字段?

mysql - 如何返回数据库中具有匹配属性的所有行中的任意一行?

mysql - 使用条件更新 - 重复 key 更新

mysql - php/mysql - 根据比赛结果(进球)进行计算

sql - 我正在查询一个表,但我需要不同列中的输出

sql - 按 float 日期范围分组

mysql - 如何在不更改 my.ini 文件的情况下使我的查询符合 mysql 5.7