Mysql 从列中查找最大值并选择其行

Mysql 从列中查找最大值并选择其行,mysql,sql,max,Mysql,Sql,Max,在看了其他例子之后,我仍然无法找到解决方案,这就是为什么我请求一些帮助 我的表格结构: V_id | name | group_id | other columns ---------------------- 1 | | 1 2 | | 1 3 | | 2 4 | | 3 5 | | 3 我一直在努力构建一个查询,从group_i

在看了其他例子之后,我仍然无法找到解决方案,这就是为什么我请求一些帮助

我的表格结构:

 V_id | name | group_id | other columns
 ----------------------
   1  |      |    1     
   2  |      |    1     
   3  |      |    2     
   4  |      |    3     
   5  |      |    3
我一直在努力构建一个查询,从group_id列中选择所有具有最大值的行

因此,输出应如下所示:

V_id | name | group_id | other columns
----------------------
  4  |      |    3     
  5  |      |    3     
V_id | name | group_id | other columns
----------------------
  1  |      |    1     
  2  |      |    1     
  3  |      |    2 
   SELECT a.* 
     FROM Table1 a
LEFT JOIN (SELECT MAX(Group_ID) AS MAXID 
             FROM Table1) B
       ON a.Group_id = B.MaxID
    WHERE B.MaxID IS NULL;
我相信这可以通过选择组id最高的所有记录来解决

并且还需要一个查询来获取所有其他剩余的行。 在这种情况下,应该是这样的:

V_id | name | group_id | other columns
----------------------
  4  |      |    3     
  5  |      |    3     
V_id | name | group_id | other columns
----------------------
  1  |      |    1     
  2  |      |    1     
  3  |      |    2 
   SELECT a.* 
     FROM Table1 a
LEFT JOIN (SELECT MAX(Group_ID) AS MAXID 
             FROM Table1) B
       ON a.Group_id = B.MaxID
    WHERE B.MaxID IS NULL;

我相信可以通过为问题的第一部分选择group\u id的所有记录来实现

SELECT  *
FROM    tableName
WHERE   group_id = (SELECT MAX(group_ID) FROM TableName)
第二部分

SELECT  *
FROM    tableName
WHERE   group_id < (SELECT MAX(group_ID) FROM TableName)
您可以使用JOIN进行以下操作:

SELECT a.* 
  FROM Table1 a
  JOIN (SELECT MAX(Group_ID) AS MAXID 
          FROM Table1) B
    ON a.Group_id = B.MaxID;
结果:

| V_ID |   NAME | GROUP_ID |
----------------------------
|    4 | (null) |        3 |
|    5 | (null) |        3 |
| V_ID |   NAME | GROUP_ID |
----------------------------
|    1 | (null) |        1 |
|    2 | (null) |        1 |
|    3 | (null) |        2 |
对于其余行,请使用具有以下条件的左连接:

V_id | name | group_id | other columns
----------------------
  4  |      |    3     
  5  |      |    3     
V_id | name | group_id | other columns
----------------------
  1  |      |    1     
  2  |      |    1     
  3  |      |    2 
   SELECT a.* 
     FROM Table1 a
LEFT JOIN (SELECT MAX(Group_ID) AS MAXID 
             FROM Table1) B
       ON a.Group_id = B.MaxID
    WHERE B.MaxID IS NULL;
结果:

| V_ID |   NAME | GROUP_ID |
----------------------------
|    4 | (null) |        3 |
|    5 | (null) |        3 |
| V_ID |   NAME | GROUP_ID |
----------------------------
|    1 | (null) |        1 |
|    2 | (null) |        1 |
|    3 | (null) |        2 |

请在这里展示你的奋斗。到目前为止,您编写的查询无法获得WHERE group_id=SELECT MAXgroup_id的正确语法谢谢jw!我知道这很简单,但我无法获得正确的语法。您正在执行的查询是什么?错误信息是什么?你的答案很完美!!我的意思是,在你告诉我之前,我想不出语法。谢谢你的替代方法。