免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1839 | 回复: 6
打印 上一主题 下一主题

查询问题 [复制链接]

论坛徽章:
1
午马
日期:2013-08-23 23:39:47
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-25 16:12 |只看该作者 |倒序浏览
我现在有一个表产品版本table1, 如下:

productname v1  v2  v3  v4
Calendar        1        2        3        4
Calendar        2        2        2        2
Calendar        1        4        0        0
AAA                5        6        7        8
Calendar        5        6        7        8
AAA                3        0        0        1

v1, v2, v3, v4分别为一个版本的第几个号码, v1为最高位

我想用一个select 语句查出如下结果

productname v1  v2  v3  v4
Calendar        5    6    7    8
AAA                5    6   7    8

也就是每个产品的最大那个版本号,该怎么查?
group by怎么用才能有这种效果?

[ 本帖最后由 phy0077 于 2010-1-25 17:29 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2010-01-25 17:14 |只看该作者
select * from b1 as bb1 where bb1.v1=(select MAX(v1) from b1);

论坛徽章:
1
午马
日期:2013-08-23 23:39:47
3 [报告]
发表于 2010-01-25 17:33 |只看该作者
原帖由 justlooks 于 2010-1-25 17:14 发表
select * from b1 as bb1 where bb1.v1=(select MAX(v1) from b1);



之前的结果写出了,我重写了下


我这个v1,v2,v3,v4四个一起才能确定最新的版本的,v1最大,v2次之...      并且我的两个产品都要秀出来的,   貌似没这么简单,

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
4 [报告]
发表于 2010-01-25 17:52 |只看该作者
select productname,max(concat(v1,v2,v3,v3)) from table1 group by productname;
这样ok不?

论坛徽章:
1
午马
日期:2013-08-23 23:39:47
5 [报告]
发表于 2010-01-25 18:23 |只看该作者
原帖由 cenalulu 于 2010-1-25 17:52 发表
select productname,max(concat(v1,v2,v3,v3)) from table1 group by productname;
这样ok不?


这个也不行, 我的版本号不一定都是个位数 比如1.11.2.1 ,拼接成字串比较不能准确查出最大的

难道是我的设计有问题?

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
6 [报告]
发表于 2010-01-25 19:07 |只看该作者
那这样假设你版本号的每个小部分的最大值是N,那么把整个版本号作为一个N+1进制的数字进行比较。
例如,你的版本号个每个位最大是99,也就是 99.99.99.99
那么就把它作为一个100进制的数字做比较也即99.99.99.99= 100三次方*v1+100平方*v2+100*v3+v4
select
productname,max(1000000*v1+10000*v2+100*v3+v4 )
from table1 group by productname;

论坛徽章:
8
综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-09-14 06:20:00金牛座
日期:2014-10-10 11:23:34CU十二周年纪念徽章
日期:2013-10-24 15:41:34酉鸡
日期:2013-10-19 10:17:1315-16赛季CBA联赛之北京
日期:2017-03-06 15:12:44
7 [报告]
发表于 2010-01-26 17:24 |只看该作者
原帖由 phy0077 于 2010-1-25 18:23 发表


这个也不行, 我的版本号不一定都是个位数 比如1.11.2.1 ,拼接成字串比较不能准确查出最大的

难道是我的设计有问题?



设计的时候估计没考虑这个需求
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP