MySQL 5.5从表2中为表1中的每个唯一id选择MAX

MySQL 5.5从表2中为表1中的每个唯一id选择MAX,mysql,Mysql,我有两张桌子: 表1表2 列id列id列值 1计数20 2 1计数\u 30 3 2计数20 4 2计数50 ... 2计数200 3点30分 3计数50 3计数200 4计数单位130 ... ... 我想建立一个查询,从table1、column id中选择每一行,从table2中相应的column value中选择MAX值,并在value列中将DESC缩写为int 因此,输出应为: table1.id值 2计数200 3计数200 4计数单位130 1

我有两张桌子:

表1表2
列id列id列值
1计数20
2 1计数\u 30
3 2计数20
4 2计数50
...           2计数200
3点30分
3计数50
3计数200
4计数单位130
...         ...
我想建立一个查询,从
table1、column id
中选择每一行,从
table2
中相应的
column value
中选择
MAX
值,并在
value
列中将
DESC
缩写为
int

因此,输出应为:

table1.id值
2计数200
3计数200
4计数单位130
1点30分
...           ...  
我已尝试加入
但之后,对于
表2中的每个
(计数%)
,我从
表1
获得相应的
id

从表1中选择表1.id、表2.id、表2.value
左连接表2
在表2.id=表1.id上
其中表1.id
看看这个。这将只显示一次的值

看看这个。这将只显示一次的值

试试看:

select t2.id, 
'count_' + cast(max(cast(replace(t2.value, 'count_', '') as int)) varchar) intValue
from table1 t1
join table2 t2 on t1.id = t2.id
group by t2.id
order by max(cast(replace(t2.value, 'count_', '') as int)) desc
这导致:

+----+-----------+ | ID | VALUE | +----+-----------+ | 2 | count_200 | | 3 | count_200 | | 4 | count_130 | | 1 | count_30 | +----+-----------+ +----+-----------+ |ID |值| +----+-----------+ |2 |计数200| |3 |计数200| |4 |计数| 130| |1 |计数| 30| +----+-----------+ 小提琴。

试试看:

select t2.id, 
'count_' + cast(max(cast(replace(t2.value, 'count_', '') as int)) varchar) intValue
from table1 t1
join table2 t2 on t1.id = t2.id
group by t2.id
order by max(cast(replace(t2.value, 'count_', '') as int)) desc
这导致:

+----+-----------+ | ID | VALUE | +----+-----------+ | 2 | count_200 | | 3 | count_200 | | 4 | count_130 | | 1 | count_30 | +----+-----------+ +----+-----------+ |ID |值| +----+-----------+ |2 |计数200| |3 |计数200| |4 |计数| 130| |1 |计数| 30| +----+-----------+
Fiddle.

那么问题是什么呢?问题是“我想构建一个查询,从表1中选择每一行,从表2中相应的列值中选择列id和最大值,并在值列中将DESC缩写为int。”正如我所描述的:)我得到了答案,谢谢你的评论。那么问题是什么呢?问题是“我想构建一个查询,从表1中选择每一行,从表2中的对应列值中选择列id和最大值,并在值列中将DESC缩写为int。”正如我所描述的:)我得到了答案,谢谢你的评论,谢谢Mosty Mostacho。这很有魅力!虽然
作为int
已被
作为已签名的
替换。再次谢谢你,谢谢莫斯蒂·莫斯塔科。这很有魅力!虽然
作为int
已被
作为已签名的
替换。再次感谢你。