У меня проблемы с sql-запросом. Вот почему я надеюсь, что некоторые из вас смогут мне помочь.Нужна помощь MySQL
У меня есть запрос, который выбирает последнюю запись из каждого реляционного идентификатора, но я хочу выбрать последнее, где состояние отличается. Таблица выглядит так.
+-----------+-------------+------+-----+-------------------+----------------+
| 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" ....
Я хочу, чтобы у каждого ребенка были две новейшие записи. Первая запись, где состояние = «Kommet» и второй, где статус = «Gået»
Заранее большое спасибо за вашу помощь ... Это действительно оценили :)
Я добавил тег 'great-n-per-group'. Этот тип запросов был отвечен десятки раз в Stack Overflow. Пойдите, прочитайте некоторые из решений. –