在查看其他示例之后,我仍然无法找到解决方案,这就是我要求帮助的原因。
我的表结构:
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
我认为可以通过选择group_id最高的所有记录来解决。
并且还需要查询以获取所有其他剩余的行 在这种情况下,应该是这样的:
V_id | name | group_id | other columns
----------------------
1 | | 1
2 | | 1
3 | | 2
我认为可以通过选择group_id<的所有记录来完成。 MAX(GROUP_ID)
答案 0 :(得分:1)
问题的第一部分,
SELECT *
FROM tableName
WHERE group_id = (SELECT MAX(group_ID) FROM TableName)
,第二部分,
SELECT *
FROM tableName
WHERE group_id < (SELECT MAX(group_ID) FROM TableName)
答案 1 :(得分:1)
您可以使用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 |
对于剩余的行,请使用LEFT JOIN
,条件如下:
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 |
----------------------------
| 1 | (null) | 1 |
| 2 | (null) | 1 |
| 3 | (null) | 2 |