这可能是我写过的最糟糕的标题!
我有一个表,其条目类似于:
1 ¦ ABC1 ¦ 21
2 ¦ DEF2 ¦ 43
3 ¦ DEF2 ¦ 44
4 ¦ XYZ9 ¦ 18
5 ¦ ABC1 ¦ 19
我试图在 MySQL 中写一个语句,它只会返回:
ABC1 ¦ 19
XYZ9 ¦ 18
DEF2 ¦ 44
...所以每个唯一代码的最新个人总数。我是该语言的新手,无法破解语法!
希望这是有道理的,但请随时提出任何澄清问题(当然!)。
非常感谢,
乔恩
这可能是我写过的最糟糕的标题!
我有一个表,其条目类似于:
1 ¦ ABC1 ¦ 21
2 ¦ DEF2 ¦ 43
3 ¦ DEF2 ¦ 44
4 ¦ XYZ9 ¦ 18
5 ¦ ABC1 ¦ 19
我试图在 MySQL 中写一个语句,它只会返回:
ABC1 ¦ 19
XYZ9 ¦ 18
DEF2 ¦ 44
...所以每个唯一代码的最新个人总数。我是该语言的新手,无法破解语法!
希望这是有道理的,但请随时提出任何澄清问题(当然!)。
非常感谢,
乔恩
假设表有id
, name
,count
SELECT * FROM <tablename>
WHERE id IN (SELECT MAX(id) FROM <tablename> GROUP BY name)
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.
试试这个:
select *
from <table> t
join (
select max(col1) as col1 ,col2
from <table>
group by col2)a
on t.col1=a.col1