[英]get row where max field value equals x
Let's say that I have a table like this in a mysql database:假设我在 mysql 数据库中有一个这样的表:
Id number version date
1 123 1 2016-01-12
2 123 2 2016-01-13
3 124 1 2016-01-14
4 124 2 2016-01-15
5 124 3 2016-01-16
6 125 1 2016-01-17
I would like to get all the rows in my table where the value in the field version is the maximum value for each corresponding number .我想获取表中的所有行,其中字段version中的值是每个相应数字的最大值。 For example, I want to get this output:
例如,我想得到这个输出:
Id number version date
2 123 2 2016-01-13
5 124 3 2016-01-16
6 125 1 2016-01-17
I tried something like this:我试过这样的事情:
SELECT * FROM myTable WHERE version = (SELECT MAX(version) FROM myTable)
But the above query returned empty.但是上面的查询返回空。
Please help!请帮忙!
Use this用这个
select *
from myTable
natural join
(select max(version) as version, number from myTable group by number) as T;
You sould use in clause and group by你应该使用 in 子句和 group by
for original version对于原始版本
SELECT * FROM myTable
WHERE (version, number) in
(SELECT MAX(version), number FROM myTable group by number)
for versione edited对于版本编辑
SELECT * FROM myTable
inner join myTable2 on myTable.id = myTable2.mytable_id
WHERE (version, number) in
(SELECT MAX(version), number FROM myTable group by number)
Here's a couple of options, and fiddles.这里有几个选项和小提琴。 These each select only rows that have a maximum version for their associated
number
.这些每个都只选择具有与其关联
number
最大版本的行。
select *
from releases r1
where version =
(
select max(version)
from releases
where number=r1.number
);
(fiddle) Here is a (probably better) version: (小提琴)这是一个(可能更好)的版本:
select * from releases
where (version, number) in (
select max(version), number
from releases
group by number
);
SQLFIDDLE for this SQLFIDDLE 为此
http://sqlfiddle.com/#!9/a931fb/1 http://sqlfiddle.com/#!9/a931fb/1
SELECT * FROM demo WHERE version = (SELECT MAX(version) FROM demo)
This is working well这运行良好
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.