获取用户每个类别的最新记录

时间:2018-10-04 21:36:05

标签: mysql

我有一个页面,我想在其中显示用户拥有的一项技能的最新值。用户可以具有多种技能。

为此,我有两个表,usr_skills和skill_valuations。 usr_skills列出了用户拥有的所有技能。 skill_valuations显示了用户拥有和拥有的所有技能评估,并且由于添加到表中的值而不断变化。

usr_skills的结构很简单: id,usr_id,skill_id,date_assignment

skill_valuations的结构不同: id,usr_id,skill_id,值,last_change

skill_valuations中的last_change显示何时添加了技能评估。

现在,我想获取有关用户技能的最新条目。正如您在下面的代码中看到的那样,我曾经使用过一种解决方案,到目前为止,它的工作情况还不错。我得到的结果与用户的技能一样多。但是结果不正确。所以我看到我做错了。但是哪里?我怎么了?

SELECT * 
FROM usr_skills usk 
INNER JOIN 
    (
        SELECT MAX(last_change) last_change, usr_id, skill_id, value
        FROM skill_valuations skv
        WHERE usr_id = 2
        GROUP BY skill_id
    )
    skv ON skv.skill_id = usk.skill_id AND skv.usr_id = usk.usr_id
WHERE usk.usr_id = 2
GROUP BY usk.skill_id

问题解决了。查看我的回复。

    SELECT * 
    FROM (SELECT 
      skill_id, 
      MAX(last_change) lc 
      FROM skill_valuations 
      WHERE usr_id = $usid 
      GROUP BY skill_id) 
    AS skiv 
    LEFT JOIN skill_valuations skv ON skiv.lc = skv.last_change 
    GROUP BY skiv.skill_id 
    ORDER BY value DESC

0 个答案:

没有答案