如何使用last condition = register获取数据?

时间:2013-01-25 01:20:33

标签: sql postgresql select where-clause

很好,仅供参考,这是我的第一篇文章,所以我真的不知道这里的规则,

我只是坚持从我的数据库中选择数据,这是我的一些数据。

Table (Monster_card)
mons_card_id | Level
    1           1
    2           1
    3           1
    4           1
Table (Monster_registration)
mons_reg_id |mons_card_id | status      | time(timestamp)
    1            1         "REGISTER"    "2012-07-09 12:00:00"
    2            1         "UNREGISTER"  "2012-11-01 12:49:01"
    3            2         "REGISTER"    "2012-11-03 12:49:01"
    4            3         "REGISTER"    "2012-11-04 12:49:01"

我当前的查询是=

select a.mons_card_id from monster_card a, monster_registration b
where b.status = "REGISTER"

我想要的结果=通过上面的数据,结果应该只有mons_card_id 2& 3。                     但在我目前的结果中,mons_card 1也出现了。

对不起之前的帖子感到抱歉。

任何建议?

1 个答案:

答案 0 :(得分:0)

您可以使用NOT EXISTS确保给定的mons_card_id没有“REGISTER”状态以外的最新记录

SELECT mons_card_id
FROM monster_registration M
WHERE M.status = 'REGISTER' AND NOT EXISTS (
    SELECT 1 FROM monster_registration R
    WHERE R.mons_card_id = M.mons_card_id
        AND R.time > M.time 
        AND R.status <> 'REGISTER'
)

工作SqlFiddle