Mysql表中的多个最大值

Mysql表中的多个最大值,mysql,sql,mysql-workbench,Mysql,Sql,Mysql Workbench,我有以下结构 +----+----+ | C1 | C2 | +---------+ | 1 | A | | 2 | A | | 3 | A | | 4 | B | | 5 | B | | 6 | A | | 7 | C | +----+----+ 输出应该是 C1 C2 3 A 5 B 6 A 7 C 它应该返回每个序列中具有相同C2值的最高C1值 简单组不起作用,请指导如何实现 提前感谢似乎您想要的是不

我有以下结构

+----+----+
| C1 | C2 |
+---------+
| 1  | A  |
| 2  | A  |
| 3  | A  |
| 4  | B  |
| 5  | B  |
| 6  | A  |
| 7  | C  |
+----+----+
输出应该是

C1  C2    
3    A    
5    B    
6    A    
7    C
它应该返回每个序列中具有相同C2值的最高C1值

简单组不起作用,请指导如何实现


提前感谢

似乎您想要的是不存在更高的c1或下一个更高c1的c2不等于当前c2的记录。您可以使用LIMIT 1通过c1获得子查询排序中的下一个c2

您可以通过在表中具有不同C2值的下一个值上将表左键连接到自身来完成此操作。我们使用GROUP BY获取表中不匹配的最后一行:

SELECT MAX(d1.C1) AS C1, MAX(d1.C2) AS C2
FROM data d1
LEFT JOIN data d2 ON d2.C2 != d1.C2
                 AND d2.C1 = (SELECT MIN(C1) FROM data d3 WHERE d3.C1 > d1.C1)
GROUP BY d2.C1
ORDER BY C1
输出:

C1  C2
3   A
5   B
6   A
7   C

您需要每个c2系列的最大c1:

select t.* from tablename t
where 
  coalesce(
    (select c2 from tablename where c1 = (
      select min(c1) from tablename where c1 > t.c1)
    ), ''
  ) <> t.c2

C1值是连续的,没有间隙吗?@Nick否,可能是任意的。我必须找到C1的最高值,直到C2的相同值继续。MySQL的哪个版本?版本是5.6.10
select t.* from tablename t
where 
  coalesce(
    (select c2 from tablename where c1 = (
      select min(c1) from tablename where c1 > t.c1)
    ), ''
  ) <> t.c2
| C1  | C2  |
| --- | --- |
| 3   | A   |
| 5   | B   |
| 6   | A   |
| 7   | C   |