2

仅供参考,这是我的第一篇文章,所以我不太了解这里的规则,

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

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 也出现了。

抱歉之前的帖子不完整。

有什么建议吗?

4

1 回答 1

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

于 2013-01-25T01:47:43.627 回答