Я пытаюсь выбрать COUNT (*) сделок, сгруппированных продавцом, вместе с их последним продуктом и датой его добавления. Однако по какой-то причине он, по-видимому, продолжает упорядочивать сделки по дате создания, поднимаясь, даже когда я пытаюсь выполнить подзапросы, чтобы предотвратить это. Ниже приведен пример таблицы:MySQL Выберите COUNT (*) и строку с максимальной датой
------------------------------------------------
| ID | Provider | URL | CreateDate |
------------------------------------------------
| 1 | Prov1 | http://ex.com/1 | 2015-05-10 |
| 2 | Prov1 | http://ex.com/2 | 2015-06-10 |
| 3 | Prov1 | http://ex.com/3 | 2015-07-10 |
| 4 | Prov2 | http://ex.com/4 | 2015-05-10 |
| 5 | Prov2 | http://ex.com/5 | 2015-06-10 |
------------------------------------------------
Ищу вернуть следующее:
-----------------------------------------------------------
| ID | COUNT(*) | Provider | URL | CreateDate |
-----------------------------------------------------------
| 3 | 3 | Prov1 | http://ex.com/3 | 2015-07-10 |
| 5 | 2 | Prov2 | http://ex.com/5 | 2015-06-10 |
-----------------------------------------------------------
Мой текущий запрос:
SELECT ID,COUNT(*),Provider,CreateDate,URL
FROM (SELECT * FROM products ORDER BY CreateDate DESC)
GROUP BY Provider;
Но это не похоже на работу. У кого-нибудь есть предложение?
EDIT Благодарим всех вас за отличные ответы. Для меня очень странно, что, хотя они, похоже, работают в скрипте SQL, они терпят неудачу на моем сервере базы данных. Например, используя следующие действия на сервере обеспечивает следующее:
mysql> INSERT INTO products
-> (`ID`, `Provider`, `URL`, `CreateDate`)
-> VALUES
-> (1, 'Prov1', 'http://ex.com/1','2015-05-10'),
-> (2, 'Prov1', 'http://ex.com/2','2015-06-10'),
-> (3, 'Prov1', 'http://ex.com/3','2015-07-10'),
-> (4, 'Prov2', 'http://ex.com/4','2015-05-10'),
-> (5, 'Prov2', 'http://ex.com/5','2015-06-10')
-> ;
Query OK, 5 rows affected (0.06 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> SELECT ID,COUNT(*),Provider,CreateDate,URL
-> FROM (SELECT * FROM products ORDER BY CreateDate DESC) t1
-> GROUP BY Provider;
+------+----------+----------+---------------------+-----------------+
| ID | COUNT(*) | Provider | CreateDate | URL |
+------+----------+----------+---------------------+-----------------+
| 1 | 3 | Prov1 | 2015-05-10 00:00:00 | http://ex.com/1 |
| 4 | 2 | Prov2 | 2015-05-10 00:00:00 | http://ex.com/4 |
+------+----------+----------+---------------------+-----------------+
Во время работы то же самое на SQL скрипкой работает, как ожидалось. Далее комментарий к JOIN должен работать, но у меня возникает такая же проблема, когда он возвращает неожиданные результаты. Моей версией MySQL является 5.5.37-MariaDB-34.0. Есть идеи по этому поводу?
необходимо заказывать во внешнем запросе, так как вы группируете, mysql может повторно упорядочить набор результатов подзапроса, но он хочет. –