2016-03-21 2 views
1

У меня есть таблица с этими записями:Количество (*) вопрос запрос

id   code  date 
-----  ------  ----- 
1   12   2016-01-01 
2   12   2016-01-02 
3   17   2016-01-03 
4   12   2016-01-04 
5   17   2016-01-05 
6   17   2016-01-06 
7   17   2016-01-07 

Я использую этот запрос:

SELECT `id`, `code`, `date`, COUNT(*) AS total 
FROM `foo` 
GROUP BY (code) 
ORDER BY (id) DESC 

и я получаю это:

id   code  date   total 
-----  ------  ------   ------ 
3   17   2016-01-03  4 
1   12   2016-01-01  3 

Но я необходимо показать это:

id   code  date   total 
-----  ------  ------   ------ 
7   17   2016-01-07  4 
4   12   2016-01-04  3 

Возможно ли это? Большое спасибо.

+0

Пожалуйста, используйте тег правильно. sql-server - это Microsoft SQL Server, и если ваш вопрос о MySQL, вы не должны использовать sql-server – FLICKER

+0

Как работает ваш запрос? у вас есть идентификатор, код и дата в предложении SELECT без их включения в предложение GROUP BY !! – FLICKER

+1

@FLICKER, я считаю, что MySQL это допускает. [SQL Fiddle] (http://sqlfiddle.com/#!9/05047d/4/0). –

ответ

1

Использование MAX функции:

SQL Fiddle

SELECT 
    MAX(id) AS id, 
    code, 
    MAX(date) AS date, 
    COUNT(*) AS total 
FROM foo 
GROUP BY code 
ORDER BY MAX(id) DESC; 
+0

В каком сценарии это может быть полезно? – Strawberry

+0

Мне нужно отобразить количество раз, когда в таблице отображается запись, сгруппированная по коду, и мне нужно отображать с php, когда он был в последний раз, когда он появился. – Skie

Смежные вопросы