说明一下 :字段date是个date型的
用SELECT date-'2017-08-28' date,id from t_info WHERE cpName = '火星网络' and id!=44  这条语句查询出来的结果长这样然后上面查询出来的结果作为一张表 a,查询出date 为最大时候的那条数据
SELECT MAX(date),id from (SELECT date-'2017-08-28' date,id from t_info WHERE cpName = '火星网络' and id!=44)as a这条数据是什么鬼,date跟id根本对应不上啊

解决方案 »

  1.   

    这样的sql有以下结果我觉得都是可以理解的:
    一、报错。因为一个字段取最大值,另一个字段没有指定分组函数
    二、你想要的那种结果
    三、输出最大日期和所有的id,就是说有3条数据
    四、输出最大日期和查询到的第一个id你还可以考虑这样的情况,如果最大日期有多个,怎么办?想要你的那个结果,实际上可以对查询结果按日期排序,然后用limit限定只取1条这样
    如果有多个结果多个结果都是你想要的,那可以用子查询先取出最大日期,然后找出日期等于最大日期的所有记录
      

  2.   

    max 是对的,至于id, 因为不在 group by 中,所以取的是俐记录的值( 这个id 不在 group by 中严格来说是错误的行为,只是 mysql 支持这处行为而已)
    如果你要取最大的那条记录,应该是 order by date desc limit 1
      

  3.   

    具体的信息参考官网文档说明
    https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html