这是我在 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/