Mysql 如何使用字符串和Int值选择Max
嗨,我有这张桌子Mysql 如何使用字符串和Int值选择Max,mysql,Mysql,嗨,我有这张桌子 offer_number training_title ************** ABC-1 SEMINAR ABC-9 SEMINAR ABC-10 SEMINAR ABCD-9 TRAINING EFGH-9 TESTING EFGH-10 TESTING Mysql SELECT *, MAX(offer_num
offer_number training_title
**************
ABC-1 SEMINAR
ABC-9 SEMINAR
ABC-10 SEMINAR
ABCD-9 TRAINING
EFGH-9 TESTING
EFGH-10 TESTING
Mysql
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:
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。如果每个培训标题的报价编号前缀始终相同,则以下(讨厌的)查询将起作用:
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
Mysql还具有子字符串功能
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)
9>1-您必须使用“ABC-09”进行比较,才能这样工作。。相反,您可以从字符串中“提取”数字,并使用它-最简单的应该是“替换(提供数字,'ABC-',''”),以仅获取字符串的数字部分(),然后您可能需要将()转换为数字(或添加+0以使用自动转换)每个组的字符前缀是否始终相同?freddy?对上述问题有何意见?