mysql - 读取结果的顺序。使用 in()

标签 mysql sorting

这是我在 mysql 中的查询:

SELECT school_id, first_name, last_name, email, blog_username, comment_username
FROM   table 
WHERE  user_id IN (100, 3,72) ;

结果以升序显示两个 user_id。我怎样才能使它按收到的时间排序?

所以我希望结果不是 3, 72, 100 100, 3, 72

最佳答案

Select school_id, first_name, last_name, email, blog_username, comment_username 
From table 
Where user_id IN ( 100, 3, 72 )
Order By Case 
            When user_id = 100 Then 1
            When user_id = 3 Then 2
            When user_id = 72 Then 3
            End Asc

补充说明:

所寻求的是以自定义方式对行进行排序的能力。换句话说,我们需要将自定义基数添加到一组不符合标准基数的值中。可以使用 Case 表达式来做到这一点。完成同样事情的另一种方法是:

Select school_id, first_name, last_name, email, blog_username, comment_username 
From table 
    Join (
         Select 100 As user_id, 1 As Sort
         Union All Select 3, 2
         Union All Select 72, 3
         ) As Seq
      On Seq.user_id = table.user_id
Order By Seq.Sort

关于mysql - 读取结果的顺序。使用 in(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18255975/

相关文章:

java - 为什么Java中没有SortedList?

mysql - 查找最大/最小天数并获取某些列的第一个差异

python - 根据范围对随机数字列表进行分组

r - 如何在 Shiny 的应用程序中对桑基图中的源和/或目标节点进行排序?

java - 快速排序算法无法正常工作

php - 来自 MySQL 和 PHP 脚本的 Paypal 定期付款

php - 尝试将 CakePHP Find() 转换为 MySql 语句

mysql - 如何为POS系统设计出色的数据库结构

mysql - 获取 mysql 中存储的 Proc Schema 名称

javascript - 如何在javascript中按相关性对搜索结果进行排序