mysql упорядочить по дате, вернуть 10 результатов, затем снова упорядочить по id - PullRequest
3 голосов
/ 17 февраля 2012

В моем текущем методе я использую order by date в запросе sql, затем устанавливаю back results в качестве нового массива, сортирую массив по id с помощью php.

SELECT * FROM table 
WHERE 
(
MATCH (title,content) 
AGAINST ('+$search' IN BOOLEAN MODE)
) 
order by date DESC 
limit 0,10

Я хочу спросить, есть ли метод sql, сначала order by date получить 10 результатов тогда в этих 10 результатах, order by id снова, just in one sql query?

Ответы [ 3 ]

10 голосов
/ 17 февраля 2012

Оберните внешний запрос вокруг вашего текущего запроса.

SELECT q.* 
    FROM (SELECT * FROM table 
          WHERE 
          (
          MATCH (title,content) 
          AGAINST ('+$search' IN BOOLEAN MODE)
          ) 
          order by date DESC
          limit 0,10) q
   ORDER BY q.id
0 голосов
/ 17 февраля 2012

Просто поставьте запятую, а затем еще один столбец, чтобы упорядочить по:

SELECT * FROM table
WHERE 
(MATCH (title,content) 
AGAINST ('+$search' IN BOOLEAN MODE)) 
order by date, id DESC 
limit 0,10
0 голосов
/ 17 февраля 2012

Это может сработать:

SELECT * FROM (
  SELECT * FROM table
  WHERE ...
  ORDER BY date DESC
  LIMIT 10
)
ORDER BY id
...