2015-01-10 2 views
1

Я хотел бы выбрать все отличные gameName записей fomr моя база данных. В настоящее время я сделать это с помощью следующего SQL (упрощенный)SQL - SELECT DISTINCT AND ORDER BY Последние

SELECT DISTINCT gameName FROM myTable ORDER BY gameName; 

Таблица структуры

id | gameName | modified 
__________________________________________ 
1  foo   2014-12-21 19:24:59 
6  goo   2014-12-18 14:24:59 
8  foo   2015-01-01 11:24:59 
21 doo   2014-11-23 21:24:59 
32 foo   2014-10-01 19:24:59 
3  doo   2014-08-15 22:24:59 

ВЫВОД

doo 
foo 
goo 

Я пытаюсь изменить этот SQL, чтобы дать мне внятного gameName с последние modified датировать затем и заказ не позднее modified. Я не получаю результаты, как хотелось бы.

Желаемая Выход

foo   2015-01-01 11:24:59 
goo   2014-12-18 14:24:59 
doo   2014-11-23 21:24:59 

Если это делает никакой разницы, я использую PDO Любая помощь будет принята с благодарностью.

+2

Подсказка: 'GROUP BY' +' MAX' – zerkms

ответ

2

Попробуйте это:

SELECT gameName , Max(modified) as modified 
FROM myTable 
GROUP BY gameName 
ORDER BY gameName; 
+0

Большое спасибо, это сделали. Я попробовал «ГРУППУ» с большой удачей. Ключевой частью этого 'sql' является' MAX (modifed) '. –

+1

'ORDER BY modified DESC' ... – Abecee

0

Посмотрите на этот ответ: SQL: Any straightforward way to order results FIRST, THEN group by another column?

Это может выглядеть примерно так. У меня нет доступа к SQL Server, поэтому я не могу проверить это прямо сейчас. Но это должно дать вам представление.

SELECT DISTINCT gameName FROM 
(SELECT gameName FROM myTable ORDER BY DESC modified) 
ORDER BY gameName 
+0

mysql не обязан поддерживать порядок вложенного запроса. Поэтому ваш запрос ** НЕ ГАРАНТИРОВАН **, чтобы вернуть желаемый результат. Проверьте другой ответ (который соответствует ANSI SQL) и отпустите ответ. Спасибо. – zerkms

+0

О, я не знал этого, поскольку я обычно использую MS SQL Server – JoeJoe87577

+0

то же самое для SQL Server. Порядок вложенных запросов ** не гарантируется ** в mysql, sql server, postgresql и oracle. Просто потому, что он работает для вас в данном случае, это не значит, что он будет работать некоторое время спустя. – zerkms