基本上我有一份商品名单18,36,90。我想用这些商品来拉所有行。
在第一种情况下,我想要按照此顺序18,36,90以商品的形式拉出行。以下MYSQL语句以正确的顺序提取它们,因为巧合的是商品或按升序排列:
SELECT * FROM tblMerchants WHERE merchantid=18 OR merchantid=36 OR merchantid=90
如果我想以不同的顺序(例如36,90,18不是升序或降序)拉出商品的行,该怎么办?谢谢!
答案 0 :(得分:3)
永远不要假设您的数据将按特定顺序返回(因为您声明您的结果当前是由升序版商家返回的),除非您的查询中有明确的ORDER BY。
出于您的目的,您可以使用CASE声明对所需订单进行硬编码。
SELECT *
FROM tblMerchants
WHERE merchantid IN (18, 36, 90)
ORDER BY CASE WHEN merchantid=36 THEN 1
WHEN merchantid=90 THEN 2
WHEN merchantid=18 THEN 3
ELSE 4
END
答案 1 :(得分:0)
如果您希望以不同的顺序返回结果集,那么默认情况下您必须使用ORDER BY子句。您可以通过随机值进行排序以获得随机订单,也可以使用“虚拟”列定义您自己的订单,您可以在其中任意分配值,然后按该列排序结果集。
答案 2 :(得分:0)
如果您可以使用的SELECT
中没有任何其他列,您可以添加一个并执行类似的操作(这是对Joe的回答的变体)。
SELECT *, CASE
WHEN merchantid = 36 THEN 1
WHEN merchantid = 90 THEN 2
WHEN merchantid = 18 THEN 3
END AS myorder
FROM tblMerchants WHERE last_name IN (18, 36, 90)
ORDER BY myorder