› 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
Leo818
V2EX  ›  MySQL

order by 失效问题

  •  
  •   Leo818 · Feb 24, 2021 · 3110 views
    This topic created in 2042 days ago, the information mentioned may be changed or developed.
    SELECT
    SUM( IFNULL( r.read_total, 0 ) ) AS ReadCount,
    SUM( IFNULL( r.get_total, 0 ) ) AS GetCount
    FROM
    report_promote_detail AS r
    LEFT JOIN pl_promote AS p ON r.promote_id = p.id
    WHERE
    r.planet_id = 45
    AND r.date
    GROUP BY
    r.promote_id
    ORDER BY
    ReadCount + GetCount DESC


    以上代码,使用两个数的和进行排序结果不对

    目前可以有两种方式解决这个问题
    1 、
    ReadCount + GetCount 换成 SUM( IFNULL( r.read_total, 0 ) ) +SUM( IFNULL( r.get_total, 0 ) )
    排序结果是正确的
    2 、
    SELECT 中 SUM( IFNULL( r.read_total, 0 ) ) +SUM( IFNULL( r.get_total, 0 ) ) AS Total ...... ORDER BY Total DESC
    这个结果也没问题

    请教下这个是什么情况,为啥两个别名相加不行呢?(之前也这样做过,但是可以,猜测是因为 SUM 函数或者 GROUP BY ?)
    6 replies  •  2021-02-25 10:55:44 +08:00
    zm8m93Q1e5otOC69
        1
    zm8m93Q1e5otOC69  
       Feb 24, 2021
    加个括号试试?
    zm8m93Q1e5otOC69
        2
    zm8m93Q1e5otOC69  
       Feb 24, 2021
    select sum(count2) as c1,
    sum(count1) as c2
    from test
    group by type
    order by c1 + c2 desc
    (报错)[42S22][1247] Reference 'c1' not supported (reference to group function)
    zm8m93Q1e5otOC69
        3
    zm8m93Q1e5otOC69  
       Feb 24, 2021
    应该和 聚合函数 有关。。好像聚合函数别名不能 order by 。。
    Leo818
        4
    Leo818  
    OP
       Feb 25, 2021
    @beichenhpy 谢谢你的回复,请问下是怎么得到的这个错误提示呢,我用 Navicat 执行是正常的没有报错,要是有报错提示,可能我就没那么纠结这个问题了
    zm8m93Q1e5otOC69
        5
    zm8m93Q1e5otOC69  
       Feb 25, 2021
    @Leo818 我用 datagrip 写的。。不懂为啥你不报错。。同事用 oracle 都不允许 order by 使用别名。。
    Leo818
        6
    Leo818  
    OP
       Feb 25, 2021
    @beichenhpy 我朋友试了下,在他们那里也报错,他们用的是 mysql 5.X,我的是 mysql 8.x 就不报错,莫非是我版本问题,又或者我用的是假的?哈哈哈哈,太坑了,要是早就报错,我也不至于那么纠结
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2948 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:38 · PVG 20:38 · LAX 05:38 · JFK 08:38
    ♥ Do have faith in what you're doing.