如何从表中获取最新的数据?

68bkxrlz  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(259)

这是我的table

|    Date | Value |
|---------|-------|
| 2020-01 |   598 |
| 2020-01 |   659 |
| 2020-01 |  1005 |
| 2020-03 |   478 |
| 2020-06 |   500 |
| 2020-06 |   898 |
| 2020-06 |   258 |
| 2020-06 |   654 |
| 2020-06 |   459 |
| 2020-03 |   656 |
| 2020-02 |   897 |
| 2020-02 |  1547 |
| 2020-05 |  2028 |

我要问的问题是“利用最近一个月的可用数据,估计全国房屋价值的范围是多少?”
因为我的table很小,我知道最近的日期是2020-06年。
所以我写了这个代码:

SELECT date, value
FROM home
WHERE date = '2020-06';

我得到的结果是:

|    Date | Value |
|---------|-------|
| 2020-06 |   500 |
| 2020-06 |   898 |
| 2020-06 |   258 |
| 2020-06 |   654 |
| 2020-06 |   459 |

我编写的另一种代码方法是:

SELECT date, value
FROM home
Order by date DESC
LIMIT 5;

我得到了和上面相同的结果。但是如果我有大量的数据,这两个代码都不可行。所以我的问题是,我怎样才能得到最新的数据而不用手动输入具体的数据呢?
sql小提琴在这里

gk7wooem

gk7wooem1#

可以使用子查询:

SELECT date, value
FROM home
WHERE date = (SELECT MAX(date) FROM home);
9rnv2umw

9rnv2umw2#

RANK() 窗口功能:

SELECT t.date, t.value
FROM (
  SELECT date, value, RANK() OVER (ORDER BY date DESC) rnk
  FROM home
) t
WHERE t.rnk = 1

请看演示。
或与 NOT EXISTS :

SELECT t.date, t.value
FROM home t
WHERE NOT EXISTS (SELECT 1 FROM home WHERE date > t.date)

请看演示。
结果:

| date    | value |
| ------- | ----- |
| 2020-06 | 500   |
| 2020-06 | 898   |
| 2020-06 | 258   |
| 2020-06 | 654   |
| 2020-06 | 459   |

相关问题