来自两列查询的sqlite最大值

时间:2018-02-13 19:18:58

标签: android sqlite select group-by inner-join

我在sqlite中有这样的表:

 ********************
 * num *    date    *
 ******************** 
 * 3   * 15-02-2018 *
 * 2   * 15-02-2018 *
 * 6   * 14-02-2018 *
 * 24  * 12-02-2018 *
 * 8   * 15-02-2018 *
 ********************

现在......我必须得到表格方面的最大行到(第一个)日期然后是num ...所以在示例中查询应该返回“8”“15-02-2018”我试过了8小时但没有结果....我的查询是:

        SELECT t2.num, t2.date
        from
            (
        select(num),max(date) as date
                    from myTable
                    group by num
            ) t1

        inner join myTable t2 on t2.num = t1.num
        and
        t2.date = t1.date
        group by t2.num,t2.date
        limit 1

但此查询返回“2”“15-02-2018”.... 任何帮助非常感谢! 亚历

1 个答案:

答案 0 :(得分:1)

我认为以下内容将提供所需的结果: -

SELECT max(num) AS num, date
FROM mytable
GROUP BY substr(date,7,4)||'-'||substr(date,4,2)||'-'||substr(date,1,2)
ORDER BY substr(date,7,4)||'-'||substr(date,4,2)||'-'||substr(date,1,2) DESC LIMIT 1

注意GROUP BY date也可以。

即。 : -

enter image description here

此订单根据可接受/可识别的日期(即YYYY-MM-DDDate And Time Functions )按降序排序,因此最新日期是第一个而且只有按LIMIT 1返回。它GROUP根据日期(按编号分组基本上没有影响,因为所有数字都是唯一的),因此最大数量是每个日期。