Mysql 按特定顺序从数据库中提取行(不使用order BY)

Mysql 按特定顺序从数据库中提取行(不使用order BY),mysql,sql-order-by,Mysql,Sql Order By,基本上我有一份merchantid的18、36、90的清单。我想把所有的行都换成这些商品 在第一种情况下,我希望按18,36,90的顺序拉取带有merchantid的行。下面的MYSQL语句按正确的顺序提取它们,因为merchantid的顺序或升序是一致的: SELECT * FROM tblMerchants WHERE merchantid=18 OR merchantid=36 OR merchantid=90 如果我想以不同的顺序,比如36,90,18,不升序或降序,来拉merchan

基本上我有一份merchantid的18、36、90的清单。我想把所有的行都换成这些商品

在第一种情况下,我希望按18,36,90的顺序拉取带有merchantid的行。下面的MYSQL语句按正确的顺序提取它们,因为merchantid的顺序或升序是一致的:

SELECT * FROM tblMerchants WHERE merchantid=18 OR merchantid=36 OR merchantid=90

如果我想以不同的顺序,比如36,90,18,不升序或降序,来拉merchantid的行,该怎么办?谢谢

除非您的查询中有明确的order by,否则不要假设您的数据将按特定顺序返回(因为您声明您的结果当前由升序merchantid返回)

出于您在这里的目的,您可以使用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

如果希望结果集以不同的顺序返回,则必须使用ORDERBY子句。您可以按随机值排序以获得随机顺序,或者您可以使用“虚拟”列定义自己的顺序,在该列中您可以任意分配值,然后按该列对结果集进行排序。

如果
选择中没有任何其他列可供使用,您可以添加一列并执行类似操作(这是Joe答案的变体)


我知道你说过不要使用order by,但是,
order by rand()
应该有效,谢谢!我真的很感激。
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