MySQL - сортировать только первые 3 строки

Я искал решение, позволяющее работать $.bind и $.unbind без проблем в динамически добавленных элементах.

Поскольку on () делает трюк для присоединения событий, чтобы создать фальшивую отвязку на тех, к которым я пришел:

const sendAction = function(e){ ... }
// bind the click
$('body').on('click', 'button.send', sendAction );

// unbind the click
$('body').on('click', 'button.send', function(){} );

5
задан GMB 28 March 2019 в 01:03
поделиться

2 ответа

Вы можете просто UNION два запроса, например:

(SELECT p.*, 1 is_premium FROM posts p WHERE category = 'premium' ORDER BY post_date DESC LIMIT 3)
UNION
(SELECT p.*, category = 'premium' FROM posts)
ORDER BY is_premium, post_date DESC

Первый запрос выбирает 3 самых последних премии posts. Второй запрос выбирает все сообщения. UNION заботится об удалении дубликатов по запросам. Внешний запрос ставит первоклассные посты первыми, а заказы - по убыванию.

0
ответ дан GMB 28 March 2019 в 01:03
поделиться

Я бы использовал запрос UNION, чтобы выбрать 3 продукта премиум-класса, а затем остальные:

SELECT * 
FROM ((SELECT 1 AS premium, posts.* 
       FROM posts
       WHERE `posts.category` LIKE 'premium'
       ORDER BY post_date_desc
       LIMIT 3)
      UNION
      (SELECT 0 AS premium, posts.*
       FROM posts)
     ) p
GROUP BY p.ID
ORDER BY premium DESC, `p.post_date` DESC

UNION по умолчанию удаляет дубликаты, поэтому это предотвратит повторение того же поста в списке. [ 114]

0
ответ дан Ray Santos 28 March 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: