当前位置:首页 > 编程笔记 > 正文
已解决

人员查询的时候,输入多个人员姓名查询,想把查询的结果按照人名输入的顺序显示(sqlserver、mysql、Oracle、pgsql下的自定义排序)。

来自网友在路上 11058105提问 提问时间:2023-11-06 20:52:07阅读次数: 105

最佳答案 问答题库1058位专家为你答疑解惑

由于业务需求客户提出在进行多个人员姓名查询时,想把查询的结果按照人名输入的顺序显示。

开始是打算对查出来的数据进行二次处理重新排序,但是由于数据量大,查询必需要分页查询,这样一来,二次处理显然不是一个明智的方式。这种情况下只能从数据库入手,对于长期使用框架的人来说着实有点难度。

多方查找资料得出以下几种方式均可以实现该目的,由于项目环境,代码中使用的也是第四种方式,所以第四种也介绍的最详细。

一、ORDER BY子句结合CASE·表达式

假设有一个名为people的表:

SELECT *
FROM people
WHERE person_name IN ('张三','李斯','王武','赵六')    --输入的人员姓名序列
ORDER BY
CASE person_name
WHEN '张三' THEN 1
WHEN '李斯' THEN 2
WHEN '王武' THEN 3
WHEN '赵六' THEN 4
ELSE 5    --如果有其他人员不在列表中,可以将其放在未尾
END;


上述SQL查询首先使用WHERE·子句来筛选包含在输入的人员姓名列表中的记录,然后使用ORDER BY子句结合CASE·表达式,将结果按照你输入的姓名的顺序进行排序。每个姓名都有一个对应的权重,以确保它们按照指定的顺序显示。

可以根据实际情况修改查询中的表名、列名和姓名列表,以适应你的数据库架构和数据。

这个语句对于不同数据库的兼容性较大,亲测:

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"人员查询的时候,输入多个人员姓名查询,想把查询的结果按照人名输入的顺序显示(sqlserver、mysql、Oracle、pgsql下的自定义排序)。":http://eshow365.cn/6-33924-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!