Mysql 从第二个表中获取最大值,并通过连接两个表对结果集进行排序
我被一个问题难住了 我有下面的表结构 表1Mysql 从第二个表中获取最大值,并通过连接两个表对结果集进行排序,mysql,Mysql,我被一个问题难住了 我有下面的表结构 表1 +----+-------+ | cid | name| +----+-------+ | 1 | name1 | | 2 | name2 | | 3 | name3 | | 4 | name4 | | 5 | name5 | +----+-------+ 表2 +----+-------+------+ | id | cid | value| +----+-------+------+ | 1 | 1 | 200 | |
+----+-------+
| cid | name|
+----+-------+
| 1 | name1 |
| 2 | name2 |
| 3 | name3 |
| 4 | name4 |
| 5 | name5 |
+----+-------+
表2
+----+-------+------+
| id | cid | value|
+----+-------+------+
| 1 | 1 | 200 |
| 2 | 1 | 300 |
| 3 | 1 | 500 |
| 4 | 2 | 200 |
| 5 | 2 | 400 |
| 6 | 3 | 100 |
+----+-------+------+
我需要一个查询以表2的降序获取最大值的数据。表1和表2是一对多的关系,所以我需要这样的结果
+----+-------+------+
| cid | name | value|
+----+-------+------+
| 1 | name1| 500 |
| 2 | name2| 400 |
| 3 | name3| 100 |
| 4 | name4| NULL |
| 5 | name5| NULL |
+----+-------+------+
一种简单的方法是使用相关子查询:
select t1.*,
(select max(value)
from table2 t2
where t2.cid = t1.cid
) as maxvalue
from table1 t1
order by maxvalue desc, t1.cid;
试试这个
select t1.cid,t1.name,max(t2.value) as value from Table1 t1
LEFT JOIN Table2 t2 on t2.cid=t1.cid
group by t1.cid desc value desc;
谢谢你这么多的朋友我所需要的绝对正确谢谢你这么多的朋友我所需要的绝对正确看到你真正尝试过的东西会很高兴