MySQL - 使它成为一个查询

时间:2012-03-09 01:21:52

标签: mysql sql database

我试图看看我是否可以在一个查询中完成以下情况:

我有一个包含多列的表,但是,只有两个是重要的:version和groupId。 许多行可以共享相同的groupId值,版本列是需要的数字 待分类。

给定两个groupId值A和B,我想最后返回两行。我想找到每个A组和B组的最新版本号。

感谢您的帮助。对不起,如果这很明显,但我遇到了困难

3 个答案:

答案 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`