MySQL:最后显示包含特定内容的行

时间:2013-06-01 01:25:09

标签: mysql sql

我的数据库中有很多产品数据。每个产品都有一个ShopID,告诉我它属于哪个商店。 我希望ShopID为1,4,7的所有产品在结果中显示为最后一个。 我怎么能这样做?

示例代码

SELECT * FROM Tablename WHERE Name LIKE %red% ORDER BY ShopID ASC

最诚挚的问候, d。

3 个答案:

答案 0 :(得分:1)

如果ShopID未保存为逗号分隔值,则可以使用MySQL的FIELD()

ORDER BY FIELD(ShopID, 1,4,7) ASC, ShopID ASC

1,4,7出现在结果列表的最后一部分的原因是因为FIELD()返回列表中指定的索引。在这种情况下,1,4,7以外的任何数字都有一个索引0,使其在列表中排在第一位。

答案 1 :(得分:0)

另一种选择是在CASE子句中使用ORDER BY语句:

SELECT * 
FROM Tablename 
WHERE Name LIKE '%red%' 
ORDER BY CASE WHEN ShopID IN (1,4,7) THEN 1 ELSE 0 END, ShopID

答案 2 :(得分:0)

使用此:

ORDER BY (ShopID IN (1, 4, 7)), ShopID

对于不匹配的行,ShopID IN表达式将返回0,对于那些行,{{1}}表达式将返回1。