Извлечь только одну запись из первого порядка и отдохнуть из второго порядка - PullRequest
0 голосов
/ 22 декабря 2018

У меня есть запрос

SELECT s.*
     , g.* 
  from tbl_section1 as s
     , tbl_game as g 
  LEFT 
  JOIN tbl_game_visit_count AS gvc 
    ON g.game_id = gvc.game_id 
 where s.category_id = g.game_id 
 ORDER 
    BY g.udate DESC
     , gvc.visit_count DESC

, который отлично работает.

Но я хочу получить первую запись, упорядоченную по g.udate, а затем остальные записи, упорядоченные по gvc.visit_count.

Возможно ли это с помощью запроса mysql?

Спасибо заранее.

1 Ответ

0 голосов
/ 23 декабря 2018

Это может быть возможно при использовании UNION (, а не UNION ALL, поскольку мы не хотим дублировать строки ) между двумя запросами с предложениями ORDER BY и LIMIT в скобках

SELECT q.*
  FROM
  (
    SELECT s.*, g.* 
      FROM tbl_section1 as s
     INNER JOIN tbl_game as g ON s.category_id = g.game_id 
      LEFT JOIN tbl_game_visit_count AS gvc ON g.game_id = gvc.game_id 
     ORDER BY g.udate DESC
     LIMIT 1 
   ) q
 UNION
    SELECT s.*, g.* 
      FROM tbl_section1 as s
     INNER JOIN tbl_game as g ON s.category_id = g.game_id 
      LEFT JOIN tbl_game_visit_count AS gvc ON g.game_id = gvc.game_id 
     ORDER BY gvc.visit_count DESC;

PS Из-за вашего исходного запроса я сохранил DESC опции для ORDER BY, вы можете избавиться от них, если хотите регулярно упорядочивать по возрастанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...