Mysql 如何修复未显示的查询结果?

Mysql 如何修复未显示的查询结果?,mysql,Mysql,我有一个MySQL查询,我想执行这个查询,看看谁是我工作的公司中技能最好的员工。为了做到这一点,我从我的简历中随机选择了一家公司(技能简历测试),并找到为同一雇主工作的所有用户。然后我随机选择一项技能。 结果应为零或列表。 但是当使用PHPMyAdmin进行测试时,我得到的结果是没有看到任何行,但状态显示至少有一行。 以下是我收到的信息示例: 我一直在尝试不同的结构,甚至用另一个查询,不同的连接来“隔离”查询 SELECT DISTINCT(sv.usr_id), u.first_name AS

我有一个MySQL查询,我想执行这个查询,看看谁是我工作的公司中技能最好的员工。为了做到这一点,我从我的简历中随机选择了一家公司(技能简历测试),并找到为同一雇主工作的所有用户。然后我随机选择一项技能。 结果应为零或列表。 但是当使用PHPMyAdmin进行测试时,我得到的结果是没有看到任何行,但状态显示至少有一行。 以下是我收到的信息示例:

我一直在尝试不同的结构,甚至用另一个查询,不同的连接来“隔离”查询

SELECT
DISTINCT(sv.usr_id),
u.first_name AS fn,
u.last_name AS ln,
c.name AS company,
s.name AS skill 
FROM 
    (
        SELECT 
            MAX(last_change) as date, 
            id,
            usr_id, 
            skill_id
        FROM skill_valuations 
        GROUP BY usr_id, skill_id
        ORDER BY date
    ) sv
LEFT JOIN skill_valuations skv ON skv.last_change = sv.date
INNER JOIN 
    (
        SELECT 
            DISTINCT(skct.comp_id),
            skct.usr_id AS usr_id, 
            skct.category 
        FROM skill_cv_test skct 
        WHERE skct.end_date IS NULL AND skct.comp_id IN (SELECT comp_id FROM (SELECT comp_id FROM skill_cv_test WHERE usr_id = 1 ORDER BY RAND() LIMIT 1) x)
    ) uqv ON uqv.usr_id = sv.usr_id
INNER JOIN 
    (
        SELECT skill_id 
        FROM usr_skills 
        WHERE usr_id = $uid 
        ORDER BY RAND() 
        LIMIT 1
    ) usq ON usq.skill_id = sv.skill_id 

LEFT JOIN companies c ON c.id = uqv.comp_id
LEFT JOIN skills s ON s.id = sv.skill_id
LEFT JOIN users u ON u.id = sv.usr_id

如前所述,我希望没有结果或至少有一行的结果。

MySQL的DISTINCT是一个关键字而不是一个函数,它仍然会对所有列计数。。如果要使用DISTINCT as函数,请使用PostgreSQL,其中
DISTINCT ON(),*
可用于取消一列的复制。谢谢。如果你写它作为一个答复,我标记为解决方案。在MySQL中,你需要或多或少地
SELECT。。。其中(,usr_id)位于(选择,最小/最大(usr_id)…分组依据…
。。。此外,还有更多选项,例如使用自左联接的行数和移位过滤器,其中还可以找到最小/最大值。。或者你在MySQL中模拟
DISTINCT ON(),*
,谢谢雷蒙德,我一定会听从你的建议。