首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用字符串和Int值选择最大值

如何使用字符串和Int值选择最大值
EN

Stack Overflow用户
提问于 2015-05-25 15:19:45
回答 2查看 703关注 0票数 0

嗨,我有这张表..

代码语言:javascript
复制
offer_number      training_title
**************
    ABC-1          SEMINAR
    ABC-9          SEMINAR
    ABC-10         SEMINAR
    ABCD-9         TRAINING
    EFGH-9         TESTING
    EFGH-10        TESTING

Mysql

代码语言:javascript
复制
SELECT *, MAX(offer_number) as offer_number_latest FROM (`training_program`) WHERE `training_title` LIKE '%SEMINAR%' GROUP BY `training_title` ORDER BY `offer_number` desc

我想生产ABC-10,但我总是得到ABC-9,而不是ABC-10。

示例2:

代码语言:javascript
复制
 SELECT *, MAX(offer_number) as offer_number_latest FROM (`training_program`) WHERE `training_title` LIKE '%TESTING%' GROUP BY `training_title` ORDER BY `offer_number` desc  

我需要一个结果EFGH-10,但我总是得到EFGH-9而不是EFGH-10。

EN

回答 2

Stack Overflow用户

发布于 2015-05-25 15:34:26

如果每个training_title的offer_number前缀始终相同,则将执行以下(讨厌)查询:

代码语言:javascript
复制
select training_title, 
  concat(
    left(offer_number, 
      locate('-', offer_number)
    ), 
    max(
      cast(substring(offer_number, locate('-', offer_number) + 1) as signed)
    )
  ) from offers group by training_title

demo here

票数 1
EN

Stack Overflow用户

发布于 2015-05-25 16:56:59

Mysql也有SUBSTRING功能。

代码语言:javascript
复制
 mysql> select * from offer;
    +--------------+----------------+
    | offer_number | training_title |
    +--------------+----------------+
    | ABC-1        | SEMINAR        |
    | ABC-9        | SEMINAR        |
    | ABC-10       | SEMINAR        |
    | ABC-8        | SEMINAR        |
    | ABC-14       | SEMINAR        |
    | ABC-12       | SEMINAR        |
    +--------------+----------------+
    6 rows in set (0.00 sec)

    mysql> SELECT MAX(CAST(SUBSTRING(offer_number,LOCATE('-',offer_number)+1) AS SIGNED)) as MAX FROM offer ;
    +------+
    | MAX  |
    +------+
    |   14 |
    +------+
    1 row in set (0.00 sec)

    mysql> SELECT * FROM offer ORDER BY CAST(SUBSTRING(offer_number,LOCATE('-',offer_number)+1) AS SIGNED);
    +--------------+----------------+
    | offer_number | training_title |
    +--------------+----------------+
    | ABC-1        | SEMINAR        |
    | ABC-8        | SEMINAR        |
    | ABC-9        | SEMINAR        |
    | ABC-10       | SEMINAR        |
    | ABC-12       | SEMINAR        |
    | ABC-14       | SEMINAR        |
    +--------------+----------------+
    6 rows in set (0.00 sec)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30433090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档