1

我的数据库中有一堆产品数据。每个产品都有一个特定的 ShopID,它告诉我它属于哪个商店。 我希望 ShopID 为 1、4、7 的所有产品最后出现在结果中。 我怎样才能做到这一点?

示例代码

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

最好的问候,D。

4

3 回答 3

1

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

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

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

于 2013-06-01T01:33:40.160 回答
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
于 2013-06-01T01:37:07.143 回答
0

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.

于 2013-06-01T01:38:10.543 回答