Postgres DB,如何仅获得一个结果

问题描述 投票:1回答:1

为了简单起见,这就是数据库的外观:

state | name1 | name2 | timestamp
  2   | user1 | set1  | 2020-05-27 16:20:00
  6   | user1 | set1  | 2020-05-27 16:19:00
  8   | user2 | set1  | 2020-05-27 16:10:00
  2   | user2 | set1  | 2020-05-27 16:00:00
  2   | user3 | set1  | 2020-05-27 16:30:00
  2   | user4 | set2  | 2020-05-27 16:35:00

说明:

如果状态为2,则用户在给定的“时间戳”上登录到“ name2”中给出的集合上。

如果状态为6或8,则用户从集合中注销。现在,用户一天可能登录和注销几次。但是我需要弄清楚哪个用户现在登录。

更新:同一组上可以同时登录多个用户。我更新了表格。

为了清楚起见,在此示例中,我需要以下输出:

state | name1 | name2 | timestamp
  2   | user1 | set1  | 2020-05-27 16:20:00
  2   | user3 | set1  | 2020-05-27 16:30:00

任何提示我怎么能得到它?我现在正在就这个主题进行两天的工作...问谷歌,来到这里,但这对我没有多大帮助。

这对我不起作用,因为我得到了所有用户,无论他们最近登录还是注销都没有关系...

select  state,
        name1,
        name2,
        timestamp
from db1
where name2 = 'set1' AND timestamp >= current_date
order by timestamp desc,state,name1 limit 5;

亲切的问候JP

PS:在问题中删除问候语是否正常?

为了简单起见,这就是数据库的样子:state |名称1 | name2 |时间戳2 | user1 | set1 | 2020-05-27 16:20:00 6 | user1 | set1 | 2020-05-27 16:19:00 8 | user2 | set1 | ...

timestamp postgresql-9.6
1个回答
0
投票

尝试将state = 2添加到where子句并设置limit 1例如:

© www.soinside.com 2019 - 2024. All rights reserved.