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 に答える