我有一个大型产品数据库,每个星期天,我的脚本都会激活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。