2011-12-02 2 views
1

У меня есть таблица, как будто я хочу взять 20 самых популярных исполнителей и заказать их (эти 20 певцов) в алфавитном порядке.mysql ограничение по точкам, но заказать по алфавиту?

id name   hit 
    ---------------- 
    1  Beyonce  2540 
    2  Eminem  1432 
    3  Pink   1642 
    4  Shakira  1234 
    . 
    . 

Например, я использую этот код

$query = mysql_query("SELECT * FROM pm_categories ORDER BY hit DESC limit 20"); 

Я беру 20 с наибольшим количеством хитов, но я хочу также заказать их alphabeticly. Как я могу это сделать?

ответ

4

Это следует сделать это:

SELECT * 
FROM pm_categories 
WHERE id IN (
    SELECT id 
    FROM pm_categories 
    ORDER BY hit DESC 
    LIMIT 20 
) ORDER BY name 

Вы должны запросить на основе обращений по отдельности, а затем использовать идентификаторы в топ-20, чтобы запрашивать и сортировать по имени.

Поскольку у вас установлена ​​более старая версия mysql, вам нужно будет сделать соединение.

SELECT cat.* 
FROM (
    SELECT id 
    FROM pm_categories 
    ORDER BY hit DESC 
  LIMIT 20 
) top_hits 
JOIN pm_categories cat ON top_hits.id = cat.id 
ORDER BY cat.name 
+0

Это дает ошибку: Warning: mysql_fetch_array(): поставляется аргумент не является допустимым MySQL результаты ресурс в /home/admin/domains/xxx.com/public_html/melody/include/functions.php на линии 413 – BerkErarslan

+0

Это означает, что mysql_query имеет ошибку. Распечатайте результаты mysql_error(), чтобы узнать, что такое ошибка. Как сказал @Inca, у вас может быть старая версия mysql. – loganfsmyth

+0

У меня есть версия MySQL 5.1.57, я думаю, что это не старый? – BerkErarslan

0

Попробуйте

$query = mysql_query("SELECT * FROM pm_categories ORDER BY hit DESC, name ASC limit 20"); 
Смежные вопросы