假设我有以下两个表:LEFT JOIN的最大价值
STUDENT
studentid lastname firstname
1 Smith John
2 Drew Nancy
STUDENT_STORY
studentid dateline storyid status
1 1328313600 10 2
1 1328313601 9 1
2 1328313602 14 2
2 1328313603 12 1
现在,我需要一个SQL查询,将与该学生的学生的故事台最新的故事沿着选择的每个学生。
我想这一点:
SELECT s.*, ss.*
FROM student AS s
LEFT JOIN (
SELECT *
FROM student_story
WHERE student_story.studentid = s.studentid
ORDER BY dateline DESC LIMIT 1
) AS ss ON (ss.studentid = s.studentid)
然而,此查询不起作用。它抱怨s.studentid是子查询的where子句中的未知字段。
请建议我如何才能实现我想要做的。
谢谢。
现在,当我仔细想想,这可能如果两次有相同的时间戳多个条目返回相同的学生,所以可能不要使用这个。 – Detheroc 2012-02-04 22:10:36
除非出现严重错误,否则绝不应该这样。如何修复此查询,以便在多个条目具有相同时间戳的情况下不会返回同一个学生两次? – akanevsky 2012-02-04 23:01:08
如果student_story表中的ID也保证随时间增加,您可以选择并比较最大ID。虽然在你的例子中似乎不是这种情况,所以问题可能非常棘手。 Vyktor的解决方案没有工作吗?这似乎很合理。 – Detheroc 2012-02-05 11:31:52