mysql中的高级排序

Kri*_*eth 2 mysql sorting

我有一个表,其中有一列包含产品名称。

我想按产品名称升序排序,但我希望包含“配件”一词的产品名称最后排序。

如何才能做到这一点?

Mar*_*ams 5

这是执行此操作的常见方法:

SELECT * FROM my_table
ORDER BY product_name LIKE '%accessory%', product_name
Run Code Online (Sandbox Code Playgroud)

或者

SELECT * FROM my_table
ORDER BY LOCATE('accessory', product_name), product_name
Run Code Online (Sandbox Code Playgroud)

该子句product_name LIKE '%accessory%'是一个布尔表达式,它返回0or 1,因此所有不匹配的行都将返回0,并在排序顺序中出现在前面。

LOCATE('accessory', product_name)工作方式类似,但将返回0无匹配项或第一个匹配项的整数位置。在这种情况下,两者之间几乎没有什么区别。