我遇到了一个SQL查询有点麻烦。这就是为什么我希望你们中的一些人能够帮助我。需要MySQL帮助
我有一个查询,从每个关系ID中选择最新的条目,但我想选择状态不同的最新条目。桌子看起来像这样。
+-----------+-------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| kid_id | int(11) | NO | | NULL | |
| status | varchar(50) | NO | | NULL | |
| timestamp | timestamp | NO | | CURRENT_TIMESTAMP | |
+-----------+-------------+------+-----+-------------------+----------------+
而我目前的查询看起来像这样。
SELECT *
FROM (
SELECT *
FROM actions
AS a
WHERE date(timestamp) = curdate()
AND timestamp = (
SELECT max(timestamp)
FROM actions
AS b
WHERE a.kid_id = b.kid_id
)
)
AS c
ORDER BY kid_id
而结果是这样的:
id kid_id status timestamp
54 1 Kommet 2010-09-15 00:14:51
57 2 Gået 2010-09-15 00:17:58
56 3 Kommet 2010-09-15 00:15:00
的问题是,在那里kid_id等于2,我想看到最新的条目,其中状态=“Kommet” ......
我想要每个孩子的2条最新记录。第一条记录,其中状态=“Kommet”,第二个,其中状态=“Gået”
在事先非常感谢你的帮助......这真是感激:)
我已经添加了“每个组最大的标签”。这种类型的查询在Stack Overflow上已经被回答了几十次。阅读一些解决方案。 – 2010-09-14 23:03:48