SQL:我应该使用什么查询?

时间:2019-07-10 01:26:41

标签: mysql sql database

我知道这可能是一个愚蠢的问题,但是我找不到合适的答案。

基本上,我有一个数据库,用于存储公寓的名称,预定和离开的日期以及居住者的姓名。
问题是同一间公寓有多个时间,且日期和名称不同(因为已被多次预订)。
我要做的是为每个公寓收集公寓的名称,日期以及住过的最后一个人的名字。

数据库如下:

apartment-name  first-name      date_from       date_to
apartment 1        Aaa      2018-07-10 12:00    2018-07-15 12:00
apartment 1        Bbb      2018-08-16 12:00    2018-08-20 12:00
apartment 2        Ccc      2018-08-10 12:00    2018-08-16 12:00
apartment 2        Ddd      2019-08-10 12:00    2019-08-16 12:00
...

我想要这样的查询结果:

apartment-name  first-name      date_from       date_to
apartment 1       Bbb       2018-08-16 12:00    2018-08-20 12:00
apartment 2       Ddd       2019-08-10 12:00    2019-08-16 12:00

因为这些是每个公寓中最新居住的人

我对SQL的了解有限,因此可能会有明显的答案...

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您可以假设date_from对于给定的apartment-name是唯一的,则可以为每个date_from找到最新的apartment-name,如下所示:

select apartment-name, max(date_from) as date_from from tablename group by apartment-name

要获取您要查找的其他字段,可以将其重新连接到原始表以过滤记录以仅显示每个公寓的最新居民:

select tablename.*
from tablename inner join 
(select apartment-name, max(date_from) as date_from from tablename group by apartment-name) q
on tablename.apartment-name = q.apartment-name and tablename.date_from = q.date_from

理想情况下,您的表将具有一些唯一数字ID字段作为标识唯一记录的主键,但是如果给定的公寓名称/ date_from组合是唯一的,则应该起作用。