Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 按同一列的多个值对结果排序_Mysql - Fatal编程技术网

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