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
已被作为已签名的替换。再次感谢你。