我的数据库中有一堆产品数据。每个产品都有一个特定的 ShopID,它告诉我它属于哪个商店。 我希望 ShopID 为 1、4、7 的所有产品最后出现在结果中。 我怎样才能做到这一点?
示例代码
SELECT * FROM Tablename WHERE Name LIKE %red% ORDER BY ShopID ASC
最好的问候,D。
如果ShopID
不保存为逗号分隔值,可以使用 MySQL 的FIELD()
ORDER BY FIELD(ShopID, 1,4,7) ASC, ShopID ASC
之所以1,4,7
出现在结果列表的最后一部分是因为FIELD()
返回列表中指定的索引。在这种情况下,任何不在其中的数字1,4,7
都有一个索引0
使其位于列表的首位。
Another alternative option would be to use a CASE
statement in your ORDER BY
clause:
SELECT *
FROM Tablename
WHERE Name LIKE '%red%'
ORDER BY CASE WHEN ShopID IN (1,4,7) THEN 1 ELSE 0 END, ShopID
Use this:
ORDER BY (ShopID IN (1, 4, 7)), ShopID
The ShopID IN
expression will return 0 for rows that don't match, 1 for the rows that do.