我有一个复杂的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/

10-15 07:20