求一sql语句:按a b c d四个字段中的最小正整数,由小到大进行排序

ivanpank 2020-09-21 07:47:59
...全文
239 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ivanpank 2020-09-25
  • 打赏
  • 举报
回复
太赞了,一句话搞定:select a,b,c,d,least(if( a>0, a ,100000000),if(b>0,b,100000000),if(c>0,c,100000000),if(d>0,d,100000000)) as minVal from tab1 order by minVal asc;
引用 4 楼 中国风 的回复:
可用计算列去实现,用做条件时在计算列上建索引,把<=0的值指定一个最大正整数,取最小值时忽略掉,查询时把 e.g.
alter table tab1 add  minVal  int as (least(if( a>0, a ,100000000),if(b>0,b,100000000),if(c>0,c,100000000),if(d>0,d,100000000)) ) ;
create index IDX_tab1_minVal on tab1(minVal);
select a,b,c,d,if(minVal=100000000,null,minVal) as minVal from tab1;
中国风 2020-09-25
  • 打赏
  • 举报
回复
可用计算列去实现,用做条件时在计算列上建索引,把<=0的值指定一个最大正整数,取最小值时忽略掉,查询时把 e.g.
alter table tab1 add  minVal  int as (least(if( a>0, a ,100000000),if(b>0,b,100000000),if(c>0,c,100000000),if(d>0,d,100000000)) ) ;
create index IDX_tab1_minVal on tab1(minVal);
select a,b,c,d,if(minVal=100000000,null,minVal) as minVal from tab1;
ivanpank 2020-09-24
  • 打赏
  • 举报
回复
谢谢版主回复。我在百度知道里寻求到了一个解决方案:https://zhidao.baidu.com/question/1646252302811801820.html?entry=qb_uhome_tag 具体的需求是:好比虚拟出来新的一列 e,e的值是abcd中的最小正整数,然后按e的大小排序。新的图片中的顺序是我的需求。
引用 2 楼 中国风 的回复:
e.g.
create temporary table tab1(ID int auto_increment primary key,a int,b int,c int,d int);
insert into tab1(a,b,c,d) values(8,-2,4,2);
select *,(select min(col) from (select a as col union select b union select c union select d)as t where col>=0) as ord from tab1 order by ord;
/* # ID, a, b, c, d, ord '1', '8', '-2', '4', '2', '2' */
中国风 2020-09-21
  • 打赏
  • 举报
回复
e.g.
create temporary table tab1(ID int auto_increment primary key,a int,b int,c int,d int);
insert into tab1(a,b,c,d) values(8,-2,4,2);
select *,(select min(col) from (select a as col union select b union select c union select d)as t where col>=0) as ord from tab1 order by ord;
/* # ID, a, b, c, d, ord '1', '8', '-2', '4', '2', '2' */
中国风 2020-09-21
  • 打赏
  • 举报
回复
?按栏位排序,用order by a,b,c,d 还是显示把abcd 4个栏位值 如第一行记录显示:a=-2? b=2 c=4 d=8

57,064

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧