我有一个包含产品名称的列的表。
我想按“产品名称升序”对其排序,但我希望最后对包含“附件”一词的产品名称排序。
怎么能做到?

最佳答案

这是一种常见的方法:

SELECT * FROM my_table
ORDER BY product_name LIKE '%accessory%', product_name


SELECT * FROM my_table
ORDER BY LOCATE('accessory', product_name), product_name

子句product_name LIKE '%accessory%'是一个布尔表达式,它返回01,因此所有不匹配的行都将返回0,并按排序顺序显示在前面。
LOCATE('accessory', product_name)的工作原理类似,但如果不匹配或第一个匹配的整数位置不匹配,则返回0。在这种情况下,两者没有什么区别。

10-06 10:45