我有以下 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 条记录。我想获取另外两 strip 有 max(id) 的记录,但想要为parentId = 3获取不同的id(我想提供条件)。
在任何条件下 max() 都可能吗?我想保留其他最大 ID,但只想更改特定记录?
编辑:
这里 5(或者可能是 4)将来自动态变量。因此,在parentId = 3的情况下,id可以是任何值(可以是4或5或6)。
最佳答案
您可以使用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)
关于php - Mysql max函数及具体值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23903532/