mysql语法返回最新的多行总数

时间:2012-12-12 10:13:10

标签: mysql delphi delphi-xe2

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

我有一个表格,其条目与此相似:

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

我正试图在MySQL中发表一条只返回的声明:

ABC1 ¦ 19
XYZ9 ¦ 18
DEF2 ¦ 44

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

希望这有意义,但请随时提出任何澄清问题(当然!)。

非常感谢,

乔恩

3 个答案:

答案 0 :(得分:2)

假设表格包含id列,namecount

SELECT * FROM <tablename> 
WHERE id IN (SELECT MAX(id) FROM <tablename> GROUP BY name)

答案 1 :(得分:2)

mysql中有一个技巧就是:

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

虽然这不是对其他RDBMS的有效查询,但在mysql中,如果没有聚合其他列,则返回遇到的第一个行(因此内部顺序将获取最先排序的行)

与使用复杂子查询的传统查询不同,这将表现得非常好。

答案 2 :(得分: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 demo