0

有没有办法告诉 MySQL 在制作这样的东西的同时

SELECT id, MAX(seq) FROM t1 GROUP BY ident;

我也可以获得id值?我知道如果它不在 group by 中,我不应该使用id它,但是当它已经通过它时,我觉得进行多遍以获取具有最大 seq 字段的行 id 很奇怪。那么最有效的方法是什么? id是主键

4

4 回答 4

2
SELECT  a.*
FROM    tableName
        INNER JOIN
        (
            SELECT  ident, MAX(seq) seq
            FROM    tableName
            GROUP   BY ident
        ) b ON a.ident = b.ident AND
                a.seq = b.seq
于 2013-08-23T06:47:32.450 回答
1

尝试使用自加入:

SELECT t1.* FROM MyTable t1
  JOIN
      (SELECT ident, MAX(seq) AS MAX_Seq 
         FROM MyTable 
        GROUP BY ident
      ) t2
    ON t1.seq = t2.MAX_Seq
   AND t1.ident = t2.ident

请参阅此示例 SQLFiddle

于 2013-08-23T06:46:51.777 回答
1

马贝:

SELECT MAX(a.seq), (SELECT id FROM t1 as b where b.ident=a.ident AND MAX(a.seq) = b.seq LIMIT 1) as id FROM t1 AS a GROUP BY a.ident;

小提琴

于 2013-08-23T06:53:21.803 回答
0

seq 到底是什么?

我猜你也可以订购你的结果?

SELECT id FROM t1 GROUP BY ident ORDER BY seq DESC

关于其他人的答案, seq 在另一个表中吗?

于 2013-08-23T06:50:27.757 回答