我有一个大型产品数据库,每个星期天,我的脚本都会激活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。
可以在一个查询中使用吗?
答案 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的事实。