я пытаюсь написать запрос SQL, чтобы найти последнюю запись для каждой группы является расположение моего стола:извлечь последнюю запись для каждой группы соблюдая некоторые критерии
--------------------------------------
| id | Group | message | Status | date|
-------------------------------------
| 1 | A | msg1 | sent | dt |
-------------------------------------
| 2 | A | msg2 |deferred| dt2 |
-------------------------------------
| 3 | B | msg3 |deferred| dt |
-------------------------------------
| 4 | B | msg4 |deferred| dt |
-------------------------------------
| 5 | B | msg5 |Bounced | dt |
-------------------------------------
| 6 | C | msg6 |sent | dt |
-------------------------------------
| 7 | D | msg7 |deferred| dt |
-------------------------------------
| 8 | D | msg8 |deferred| dt |
-------------------------------------
| 9 | D | msg9 |sent | dt |
-------------------------------------
И я стараюсь, чтобы получить это выход:
--------------------------------------
| id | Group | message | Status | date|
-------------------------------------
| 2 | A | msg2 |deferred| dt |
-------------------------------------
| 5 | B | msg5 |bounced | dt |
-------------------------------------
| 8 | D | msg8 |deferred| dt |
-------------------------------------
, что означает, что я хочу, для каждой группы, последний «отложено» или «подпрыгнул» сообщение, используя дату, когда я имею в моей таблице. Я начинаю делать этот запрос, но я не знаю, как изменить его, чтобы получить результат, что я хочу:
SELECT ee.Group, ee.message
FROM email_errors ee
LEFT JOIN email_errors ee2 ON (ee.Group = ee2.Group
AND ee.id < ee2.id)
WHERE ee2.id IS NULL
AND ee2.status <>0
выделю ee.status <> 0, потому что в моей реальной таблице я заменил 3 возможный статус бушель 0,1,2, и я заменил посланный статус 0.
Да, я вижу, но здесь я заблокирован, потому что мне нужно выбрать последнюю запись в зависимости от статуса, который у меня есть, и даты, и это то, что я не знаю, как написать его – Ahmadhc
Нет дат в вашем столе. – Strawberry