Mysql select row of max id 返回错误数据

标签 mysql max row

我有一个表格如下:

        tabl1 :
        id      name     created_on
        ----   ------    ----------
        1       red        2016
        2       green      2017
        3       blue       2018

然后查询如下

    select max(id),
           name,
           created_on
    from   tabl1

结果:

    id     name    created_on    
    ---    ----    ----------
    3      red      2016

在这里,我正确获取了最大 ID,但名称和 created_on 值不在同一行。我怎样才能返回这样的结果:

    id     name    created_on    
    ---    ----    ----------
    3      blue      2018

最佳答案

您应该使用最大 id 的内部连接来检索正确的行

select * from tabl1 
inner join  (
    select max(id) max_id
    from   tabl1
) t on t.max_id = tabl1.id 

没有适当的 group by 子句,聚合函数的结果没有声明列名,不在聚合函数中,在 group by 子句中对于最新版本的 mysql 是不允许的,并且结果对于旧版本是不可预测的版本

关于Mysql select row of max id 返回错误数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53941625/

相关文章:

php - 从 mysql 数据库中提取数据时,如何在 php 字符串中使用多个属性?

mysql - 选择最大字段值或零值

c - getchar() 用于从输入中排除字符

逐行排序然后跨数据框的特定列连接

html - <span> 标签在 IE7 中断行

mysql - MySQL 中的变长数组

mysql - 设置和清除 MySQL 中存储为整数的多个位

MySQL PIVOT 和 JOIN 内部 MAX CASE

php - 如何在sql中选择可能的行

mysql - 在 MySQL 中表示票价表