Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从第二个表中获取最大值,并通过连接两个表对结果集进行排序_Mysql - Fatal编程技术网

Mysql 从第二个表中获取最大值,并通过连接两个表对结果集进行排序

Mysql 从第二个表中获取最大值,并通过连接两个表对结果集进行排序,mysql,Mysql,我被一个问题难住了 我有下面的表结构 表1 +----+-------+ | cid | name| +----+-------+ | 1 | name1 | | 2 | name2 | | 3 | name3 | | 4 | name4 | | 5 | name5 | +----+-------+ 表2 +----+-------+------+ | id | cid | value| +----+-------+------+ | 1 | 1 | 200 | |

我被一个问题难住了

我有下面的表结构

表1

+----+-------+
| 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;

谢谢你这么多的朋友我所需要的绝对正确谢谢你这么多的朋友我所需要的绝对正确看到你真正尝试过的东西会很高兴