我有以下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)。
答案 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)