我的数据库中有很多产品数据。每个产品都有一个ShopID,告诉我它属于哪个商店。 我希望ShopID为1,4,7的所有产品在结果中显示为最后一个。 我怎么能这样做?
示例代码
SELECT * FROM Tablename WHERE Name LIKE %red% ORDER BY ShopID ASC
最诚挚的问候, d。
答案 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。