我有一个复杂的mysql查询,其中选择字段之一是Min(value)。由于所有“值”都是唯一的,是否还有一种方法来获取找到的最小值的行ID?
换句话说,如果我们将查询简化为该问题,则如下所示:
SELECT t1.name, MIN(t2.value) AS minval
FROM table1 t1
LEFT JOIN table2 t2
ON t2.id_user = t1.id
GROUP BY id_user
我现在如何知道为特定用户的最低t2.value选择了哪个t2.id?谢谢!
最佳答案
使用ROW_NUMBER()
查找每个value
的前一个id_user
您可以将*
替换为所需的字段
SELECT *
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY t2.id_user ORDER BY t2.value) as rnk
FROM table1 t1
LEFT JOIN table2 t2
ON t2.id_user = t1.id
) as X
WHERE X.rnk = 1
关于mysql - 获取具有Min()值的记录的ID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54426072/