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