假设我有以下两个表:
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
Run Code Online (Sandbox Code Playgroud)
现在,我需要一个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)
Run Code Online (Sandbox Code Playgroud)
但是,此查询不起作用.它抱怨s.studentid是子查询的where子句中的未知字段.
请建议我如何实现我想要做的事情.
谢谢.
Det*_*roc 24
尝试这样的事情:
SELECT
s.*,
ss.*
FROM
student AS s
LEFT JOIN
student_story AS ss
ON (ss.studentid = s.studentid)
WHERE ss.dateline = (
SELECT
MAX(dateline)
FROM
student_story AS ss2
WHERE
ss2.studentid = s.studentid
)
Run Code Online (Sandbox Code Playgroud)
SELECT
s.sale_id,
s.created_at,
p.created_at,
DATEDIFF(p.created_at, s.created_at) AS days
FROM
pos_sales s
LEFT JOIN
pos_payments p ON p.sale_id = s.sale_id
AND
p.created_at = (SELECT
MAX(p2.created_at)
FROM
pos_payments p2
WHERE
p2.sale_id = p.sale_id)
Run Code Online (Sandbox Code Playgroud)