Mysql 按同一列的多个值对结果排序
我有一个查询,根据联系人的姓名从数据库中获取联系人。它会查找多个标题,如果从同一个查询返回多个联系人,我希望他们按照特定的顺序出现。我的意思是: 这是表格的一个示例:Mysql 按同一列的多个值对结果排序,mysql,Mysql,我有一个查询,根据联系人的姓名从数据库中获取联系人。它会查找多个标题,如果从同一个查询返回多个联系人,我希望他们按照特定的顺序出现。我的意思是: 这是表格的一个示例: id | name | title | email -----+-----------+--------------------+------------------ 1 | Bob | General Manager | bob@example.com 2 |
id | name | title | email
-----+-----------+--------------------+------------------
1 | Bob | General Manager | bob@example.com
2 | John | President | john@example.com
3 | Sue | Owner | sue@example.com
我的问题是这样的:
SELECT * FROM tbl_contacts WHERE title IN ('General Manager', 'Owner', 'President')
如何使查询以特定顺序(或在我的情况下是标题层次结构)返回结果
我希望始终按顺序排列的结果:
select *
from tbl_contacts
where title in ('General Manager', 'Owner', 'President')
order by field(title, 'General Manager', 'Owner', 'President')
设置您自己的订单:
SELECT * FROM tbl_contacts
WHERE title IN ('General Manager', 'Owner', 'President')
ORDER BY CASE
WHEN title = 'Owner' THEN 0
WHEN title = 'President' THEN 1
WHEN title = 'General Manager' THEN 2
END
除了正常的asc/desc按功能排序外,我所知没有一种方法可以做到这一点。您的数据库设计应该包括一个显示顺序列。就是这样。非常感谢!如果列标题中的一个条目为空,并且我希望所有空记录都显示在所选列表的末尾,该怎么办?我尝试使用“按字段排序”,但无论我做什么,都会首先使用NULL:-(在我的情况下,当我们有一个未知值:
ELSE 4