2

这可能是我写过的最糟糕的标题!

我有一个表,其条目类似于:

1 ¦ ABC1 ¦ 21
2 ¦ DEF2 ¦ 43
3 ¦ DEF2 ¦ 44
4 ¦ XYZ9 ¦ 18
5 ¦ ABC1 ¦ 19

我试图在 MySQL 中写一个语句,它只会返回:

ABC1 ¦ 19
XYZ9 ¦ 18
DEF2 ¦ 44

...所以每个唯一代码的最新个人总数。我是该语言的新手,无法破解语法!

希望这是有道理的,但请随时提出任何澄清问题(当然!)。

非常感谢,

乔恩

4

3 回答 3

2

假设表有id, name,count

SELECT * FROM <tablename> 
WHERE id IN (SELECT MAX(id) FROM <tablename> GROUP BY name)
于 2012-12-12T10:15:37.990 回答
2

mysql中有一个技巧可以做到这一点:

select code, num
from (select * from mytable
      order by id desc) x
group by code;

虽然这不是其他 RDBMS 上的有效查询,但在 mysql 中,不聚合其他列的 group by 返回遇到的第一行(因此内部 order by 以获取最先排序的最新行)。

Unlike traditional queries using complicated sub queries, this will perform very well.

于 2012-12-12T10:24:04.067 回答
1

试试这个:

select * 
from   <table> t
join   (
        select max(col1) as col1 ,col2
        from   <table>
        group by col2)a
on      t.col1=a.col1

SQL Fiddle 演示

于 2012-12-12T10:16:40.350 回答