论坛首页 综合技术论坛

mysql 列值比较 逻辑函数IF

浏览 2714 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-04-21   最后修改:2010-04-21

数据库里abc 表

CREATE TABLE `abc` (
  `uid` int(10) NOT NULL,
  `num1` int(8) NOT NULL,
  `num2` int(8) NOT NULL,
  `num3` int(8) NOT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk

 任务:是完成每列数据的比较,将uid 以及最大数据列显示出来。

方法:

select if((select if(num1>num2,num1,num2))>num3,(select if(num1>num2,num1,num2)),num3)as num,uid from abc;

 这样写感觉不好,有没好的方法来比较。

 

结果如下:

+-----+-----+
| num | uid |
+-----+-----+
|   3 |   1 |
|   3 |   2 |
|   4 |   3 |
|   5 |   4 |
|   8 |   5 |
|  13 |   6 |
|  56 |   7 |
+-----+-----+
7 rows in set

 

 

   发表时间:2010-05-04  
感觉楼主是想找出每行数据中最大的列

我觉得可以这样写
SELECT uId
  if(num1>num2,
     if(num1>num3,num1,num3),
     if(num2>num3,num2,num3)),
uid from abc; 


希望对你有用

0 请登录后投票
   发表时间:2010-05-05  
呵呵,少做了一个判断。这样也好,谢谢~~ 有没更优化的方式啊。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics