我有一个包含产品名称的列的表。
我想按“产品名称升序”对其排序,但我希望最后对包含“附件”一词的产品名称排序。
怎么能做到?
最佳答案
这是一种常见的方法:
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%'
是一个布尔表达式,它返回0
或1
,因此所有不匹配的行都将返回0
,并按排序顺序显示在前面。LOCATE('accessory', product_name)
的工作原理类似,但如果不匹配或第一个匹配的整数位置不匹配,则返回0
。在这种情况下,两者没有什么区别。