如何根据优先级ID列表对mysql结果进行排序


How can i sort a mysql result by a list of prioritised ids?

我有一个大型产品数据库,每个星期天,我的脚本都会激活50个新产品。问题是,根据我的脚本中的一些规则,我找到了一些我应该优先激活的产品。(例如,它应该始终优先激活名称为"hello kitty"answers"meshuggah"的产品,然后再激活其他产品(

我的db表包含有关产品的信息和唯一的id。假设脚本找到了其中5个id,标题中有hellokitty。

那么,我该如何进行查询,以便按优先级排列的项目位于顶部,然后是id desc?

这里有一些我想要的伪代码:

SELECT * FROM products order by (id='59', id='47', id='28', id='29', id='20'), id desc limit 50

结果应该首先给我id 59、47、28、29和20,然后是products表中按id降序排列的其他id。

这在一个查询中可能吗?

使用FIELD

SELECT * 
FROM products 
order by FIELD(id,59,47,28,29,20), id desc 
limit 50
  • 使用MySQL按特定字段值排序

实际上,您的伪代码也非常接近这样的查询:

SELECT *
FROM products
order by id='59' desc, id='47' desc, id='28' desc, id='29' desc, id='20' desc, id desc
limit 50

这使用了一个事实,即条件的计算结果为0或1。