如何通过优先级ID列表对mysql结果进行排序?

时间:2013-02-25 14:25:35

标签: php mysql sql

我有一个大型产品数据库,每个星期天,我的脚本都会激活50个新产品。 问题是,基于我脚本中的一些规则,我发现了一些我应该优先激活的产品。 (对于你的例子,假设它应该始终优先激活名为'hello kitty'和'meshuggah'的产品,在其他所有产品之前)

我的db表包含有关产品和唯一ID的信息。 让我们说脚本找到5个这样的id,标题中有hello kitty。

那么,我该如何进行查询,以便优先项目排在最前面,然后是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,然后在product表中按照id降序排序其他id。

可以在一个查询中使用吗?

2 个答案:

答案 0 :(得分:8)

使用FIELD

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

答案 1 :(得分:1)

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

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的事实。