case when then 后返回多个值
背景:查询数据,需要根据不同性别选择不同的排序字段和排序规则,总体先按照性别排列,“女”排在“男”前,然后性别为“男”按照last_name,height,family_name,age进行升序排列,性别为“女”按照family_name,age,height,last_name降序排列,
CREATE TABLE friends (id int UNSIGNED not null auto_increment comment '主键',family_name VARCHAR(10) COMMENT '姓氏',last_name VARCHAR(20) COMMENT '名字',sex VARCHAR(2) COMMENT '性别',age int COMMENT '年龄',height int COMMENT '身高',PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='';
INSERT INTO friends(family_name,last_name,sex,age,height) values('wang','li','女',18,50),('li','piaoliang','女',19,51),('zhang','san','男',18,60),('liu','mei','女',17,46),('zhao','xiaoman','女',20,49),('chen','meng','男',16,55);
(1)mybatis项目:直接使用mybatis的动态SQL即可实现,例如
<select id="getInfo" resultType="java.util.Map">select * from friends order by convert(sex USING gbk) desc<choose><when test="sex == '女'">, family_name, age, height, last_name desc</when><when test="sex == '男'">, last_name, height, family_name, age desc</when></choose>
</select>
(2)如果无法在系统中使用动态SQL,可以在SQL中使用case when then else end语法来实现,不过case when then一般返回一个字段,对于这种多个字段的,可以采用如下方式
select * from friends order by convert(sex USING gbk) desc,case when sex = '女' then family_name else last_name end,case when sex = '女' then age else height end,case when sex = '女' then height else family_name end,case when sex = '女' then last_name else age end
desc
查询结果如下:
SQL语句中的convert是为了中文按照拼音排序,可参考:https://blog.csdn.net/yangfengjueqi/article/details/82683688
case when then 后返回多个值相关推荐
- python内置函数用来返回数值型序列中所有元素之和_语句x = 3==3, 5执行结束后,变量x的值为_学小易找答案...
[判断题]不可以在同一台计算机上安装多个Python版本. [填空题]表达式[1, 2, 3]*3的执行结果为 [填空题]使用切片操作在列表对象x的开始处增加一个元素3的代码为 [填空题]Python ...
- js:点击button后返回值
问题:点击button后返回值只有点击的位置(x,y)信息,如何返回button上的文字信息 栗子: 探索角度 点击button后的返回值好像是不会包含button上的文本信息的 解决方法还不知道 应 ...
- php-使用函数array_walk_recursive处理多维数组的键值后返回一个新数组
php-使用函数array_walk_recursive处理多维数组的键值后返回一个新数组 $result = array(); //$content是一个多维数组 $walk = array_wal ...
- 如何点击按钮弹出新窗口,输入数据后返回并刷新页面
如何点击按钮弹出新窗口,输入数据后返回并刷新页面? 作者:孟宪会 出自:[孟宪会之精彩世界] 发布日期:2003年7月8日 4点0分13秒 在一些.NET论坛中有人经常会问:如何在页面中点击按钮打开新 ...
- 转载非原创:修改BB 的内容,回车后修改CC 的值
原文 http://blog.csdn.net/iamah/article/details/8438981 修改BB 的内容,回车后修改CC 的值 步骤: 1. 注册类为对类CL_GUI_ALV_GR ...
- python如何返回多个值_python- 如何返回多个值 | 学步园
如何写一个返回多个值的函数 函数的return 语句只能返回一个值,可以是任何类型. 因此,我们可以"返回一个 tuple类型,来间接达到返回多个值 ". 例: x 除以 y ...
- Python学习入门基础教程(learning Python)--2.3.5Python返回多个值问题
本节主要学习Python的函数是如何同时返回多个值的问题. 在学习Python的时候惊奇的发现,Python的函数可以同时返回多个值,很有意思. [python]view plaincopy #def ...
- JavaScript 返回多个值
上一节的知识讲了带参数的函数,getArea用于计算桌子的面积,它返回一个值--桌子的面积. 有的时候需求还真复杂,还是拿桌子来说,要求同时计算桌子的桌面面积,还计算桌子的体积. 计算面积用长度x宽度 ...
- form + iframe 获取表单提交后返回的数据
原理: submit 提交表单没有回调函数,但是可以用iframe来接收返回结果,最后进行格式转换就ok了: 原文地址: http://blog.csdn.net/simeng_1016/articl ...
最新文章
- iOS 根据数组中的字典的value值进行排序
- 需求评审五个维度框架分析及其带来的启示-2-框架原理
- jh锂电保护电路_锂电池过充电、过放电、过流及短路保护电路原理及电路图
- System.Type类
- 机器学习基础图表:概念、原理、历史、趋势和算法
- Overview of the New C++:C++0x
- Shell: /dev/null 21详解
- ActiveMQ之消息服务器平台(发邮件)
- JS变量中你不知道的小埋伏
- HandlerInterceptor 处理器拦截器的用法
- visual studio 中将选中代码相同的代码的颜色设置,修改高亮颜色
- .NET后台输出js脚本的方法
- pythonqq机器人酷q_NoneBot+酷Q,打造QQ机器人
- openCv 图像顺时针 逆时针旋转
- matlab 图中图
- 【十三香吗?】网易严选-苹果12商品评论数据可视化分析
- centos彻底删除文件夹、文件命令
- Redis 总结 —— 2022/2/4
- 实例掌握Hadoop MapReduce
- 国际青少年计算机技能大赛英语,竞赛:2017中学生英语能力、青少年信息学奥赛!...
热门文章
- 北京交通大学计算机全球排名,2017美国研究生计算机专业排名 - 2017北京交通大学计算机考研成绩310分,能调剂到什么大学...
- 我敢打赌你一定不知道的软件测试基础知识整理
- CIO40: 2020年IT人员如何借机破局
- 桥接的虚拟机无法ping通物理机
- QQ群创建者和管理员
- [校园网]绕过校园网使用自己服务器流量教程
- 5-Selenium WebDriver三种等待--隐式等待-显式等待和流畅等待
- 算术左移、算术右移、逻辑右移
- 水果店做生意不好怎么办,水果店生意不好如何做好
- 微信H5如何直接关注公众号