今天需要实现一个需求是根据sku批量匹配产品类型,sql语句如下
select product.sku,(select name from product_category where code=product.category) as '产品类别' from product where sku in (
'EY-0393BK',
'EY-A000577',
'EY-A000235'
)
显示结果如下
乍一看,想要的结果已经实现了,但是,有一个问题,就是显示结果没有按照我的 in 查询里面的顺序显示。
那为啥要按照我的in查询里面的结果显示呢?这是因为我的in里面的sku都是直接从excel中拿出来的,也就是这些sku在excel中的顺序已经固定了,我查询出来产品类型之后,是要直接复制到对应的excel中的产品类型列。
如果你对我为啥要按照 in 里面顺序显示疑惑,就不用管了,反正你知道,这篇博客是讲述如何让显示结果按照in里面的顺序显示的,就行了
如果我们想要显示结果按照我们的in里面顺序排序,需要用到一个mysql中的field函数,这个函数可以实现我们让结果集按照指定顺序排序。
修改的sql语句如下
select product.sku,(select name from product_category where code=product.category) as '产品类别' from product where sku in (
'EY-0393BK',
'EY-A000577',
'EY-A000235'
)
order by field(sku,
'EY-0393BK',
'EY-A000577',
'EY-A000235'
)
修改之后的sql语句的执行局结果如下
这时候,我们就会看到,显示的结果集已经按照我们的in查询里面的顺序排序了。