我试图看看我是否可以在一个查询中完成以下情况:
我有一个包含多列的表,但是,只有两个是重要的:version和groupId。 许多行可以共享相同的groupId值,版本列是需要的数字 待分类。
给定两个groupId值A和B,我想最后返回两行。我想找到每个A组和B组的最新版本号。
感谢您的帮助。对不起,如果这很明显,但我遇到了困难
答案 0 :(得分:1)
这样的东西?
SELECT groupId, MAX(version) max_version
FROM YourTable
WHERE groupId IN ('A', 'B')
GROUP BY groupId;
您没有指定任何数据类型,因此我假设groupId
实际上可以使用'A'
之类的字符值。只需改变它以满足您的需求。基本的想法是,在过滤掉您感兴趣的值后,GROUP BY
groupId
SELECT
。然后,MAX(version)
为每个值{{1}}。
答案 1 :(得分:1)
尝试以下
select p.id,p.groupid,p.version from tablename p
left join
(
select max(id) id1 from tablename
group by groupId
order by max(id) desc
) t on t.id1 = p.id
假设您在表
中有一个主键列ID答案 2 :(得分:0)
我假设版本是一个整数
SELECT MAX(version), `group` FROM table WHERE `group` IN (A, B) GROUP BY `group`