具有特定值的Mysql max函数

时间:2014-05-28 05:37:46

标签: php mysql sql max

我有以下tTable

的表结构
id | version | parentId
1  | 1       | 1
2  | 1       | 2
3  | 2       | 2
4  | 1       | 3
5  | 2       | 3
6  | 3       | 3

如果我执行

SELECT MAX(id) AS maxId, FROM tTable GROUP BY parentId

然后它会返回到结果以下。

id | version | parentId
1  | 1       | 1
3  | 2       | 2
6  | 3       | 3

但是在这里我想对返回的结果进行一点改动,例如我想在tTable中使用max()跟随结果集。

id | version | parentId
1  | 1       | 1
3  | 2       | 2
*5 | 2       | 3*

id =第5条记录。我想获得max(id)的其他两个记录,但想为parentId = 3得到不同的id(我想提供条件)。

是否可以在max()中使用任何条件。我想保留其他最大ID,但只想更改特定记录?

修改

这里5(或可能是4)将来自动态变量。因此,在parentId = 3的情况下,id可以有任何值(可以是4或5或6)。

1 个答案:

答案 0 :(得分:0)

您可以使用UNION ALL来获得所需的结果,但这可能不是一个确切的解决方案。如果它有帮助,想一想它。在此处查看演示http://sqlfiddle.com/#!2/78cde/9

(SELECT MAX(id) AS maxId, version, parentId 
FROM tTable 
WHERE parentId != 3
GROUP BY parentId)

union all

(SELECT id as maxId, version, parentId 
FROM tTable 
WHERE parentId = 3
order by maxId desc
limit 1,1)