› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
lyzy
V2EX  ›  MySQL

mysql5.7 开启 only_full_group_by 如何修改 sql 语句

  •  
  •   lyzy · Feb 21, 2017 · 8118 views
    This topic created in 3507 days ago, the information mentioned may be changed or developed.

    今天公司把 mysql 从 5.6 升级到 5.7 后,报错 1055:Expression #18 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'wechat_data.mal.create_time' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 。我查了下大部分的回答都是改 mysql 配置的,主管不让改配置。请问 V 友如何在不改配置只改 sql 语句使其正常运行呢?

    以下是 sql 语句: SELECT mp.id, mp.mp_name, mp.weixinname, mp.biz, ifnull(mp.head_img_url, '') AS head_img_url, ifnull(mp.qr_code_url, '') AS qr_code_url, mp.introduce, mp.company_name, mp.first_average_num, mp.average_num, mp.souce_mp, mp.souce_article, mp.is_auth, mp.push_num, ifnull(mp.update_time, '') AS update_time, ifnull(mp.create_time, '') AS create_time,

    IF (mal.biz 'null', 1, 0) AS is_storage, ifnull(mal.create_time, '') AS import_time, ifnull(art.read_num, 0) AS read_num, ifnull(art.like_num, 0) AS like_num FROM wd_mp_library mp LEFT JOIN wd_mp_library_formal mal ON mp.biz = mal.biz LEFT JOIN wd_mp_library_about_articles art ON mp.biz = art.biz WHERE mp.isdel = 0 GROUP BY mp.id ORDER BY mp.update_time DESC, mp.create_time DESC, art.read_num DESC LIMIT 0, 20

    8 replies  •  2019-06-03 11:11:38 +08:00
    mchl
        1
    mchl  
       Feb 21, 2017
    去掉 GROUP BY mp.id
    没有发现需要 group 的理由
    liyu4
        2
    liyu4  
       Feb 21, 2017
    如果非要 group , select 也带上 mp.id
    lyzy
        3
    lyzy  
    OP
       Feb 21, 2017
    @mchl 不加 groupby 的话有重复数据
    lyzy
        4
    lyzy  
    OP
       Feb 21, 2017
    @liyu4 select 第一个就是 mp.id 了呀
    liyu4
        5
    liyu4  
       Feb 21, 2017
    @lyzy 代码太乱了看的我头疼,换个 markwodn 格式吧。
    mchl
        6
    mchl  
       Feb 22, 2017 via Android
    select distinct …
    vincik
        7
    vincik  
       Feb 22, 2017
    select distinct field
    734695609
        8
    734695609  
       Jun 3, 2019
    一个简单的例子
    mp.mp_name 改成 max(mp.mp_name) as mp_name
    其他字段也相同。
    因为我们这边也不给改 sql_mode,所以搜索出来的方法,亲测可用,因为聚合函数没有不许放到 group by 后面的限制
    不过要注意你的 max(field)中的字段的内容是否相同,我这边都是相同的,如果不一样,max(field)会拿最大的,需要注意一下
    详细可以看官网文档的 group by 部分 https://dev.mysql.com/doc/refman/8.0/en/group-by-handling.html
    我看的 8.0 文档,你换成自己版本就好了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2696 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 14:47 · PVG 22:47 · LAX 07:47 · JFK 10:47
    ♥ Do have faith in what you're doing.