Mysql 特色产品随机排序,但正常产品按日期排序

Mysql Sort featured products randomly but normal product by date

假设我的查询是 -

SELECT * FROM products ORDER BY is_featured DESC, created_date DESC

其中 is_featured 是 table 中的标志字段,它包含 1 或 0, 很明显,上面查询returns组记录,首先是所有特色商品(最新的在前),然后是普通商品(最新的在前)。

我的问题:我们如何重写上述查询,使特色产品排在第一位(但将是随机的),然后是普通产品(按创建日期排序)。

我能感觉到可能的答案是编写两个单独的查询,然后加入结果集并遍历循环以显示产品。但是想知道是否可以通过单个查询来实现?

我能想到的一种方法是在 order by 子句中添加另一个计算表达式,即 returns 特色产品的随机值和其他产品的常量,因此它不会影响他们的订单:

SELECT   *
FROM     products 
ORDER BY is_featured DESC, 
         CASE is_featured
              WHEN 1 THEN RAND()
              ELSE 1 -- Or some other constant
         END,
         created_date DESC