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

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版本:


无法正常使用-适用于Linux(x86_64)的mysql Ver 14.14 Distrib 5.6.19,使用EditLine包装器。
工作-mysql Ver 14.14 Distrib 5.5.53,用于使用readline 6.3的debian-linux-gnu(x86_64)

最佳答案

这必须归因于SQL_MODEONLY_FULL_GROUP_BY设置为default

更好的是,您总是在查询中通过汇总实践完整的分组。否则,尽管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/

10-09 00:54