首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MySQL按某个列表排序

MySQL按某个列表排序
EN

Stack Overflow用户
提问于 2011-07-25 08:44:01
回答 1查看 16.7K关注 0票数 27

我有一个数字列表:7,1,3,2,123,55 (这是现有记录的ids )

我有一个包含idname列的mysql表,其中id是一个整数主键。我希望从该表中选择记录,但要按特定顺序进行选择,例如713212355

  • 是否可以在查询内的MyISAM中完成此操作,而无需任何post processing?
  • What是完成此操作的最简单方法?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-25 08:51:34

既然是1 < 3 < 77 < 123,那么一个简单的ORDER BY id就足够了。

但是,如果您想要这样排序:77, 3, 123, 1,那么您可以使用函数

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1) 
ORDER BY FIELD(id, 77, 3, 123, 1)

如果查询匹配的行数多于在FIELD FIELD中列出的行数,则为

当某一行与您列出的任何ids都不匹配时,FIELD将返回0。这意味着,如果查询匹配的行数多于列出的行数,则这些行将首先出现。例如:

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1, 400) 
ORDER BY FIELD(id, 77, 3, 123, 1)

在本例中,ID为400的行将首先出现。如果希望这些行出现在最后,只需颠倒ID列表并添加DESC

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1, 400) 
ORDER BY FIELD(id, 1, 123, 3, 77) DESC
票数 67
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6810793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档