Mysql 按特定顺序联接表

Mysql 按特定顺序联接表,mysql,Mysql,我有两张表,例如:教师和学生,以及表LastViewedStudio,其中包含观察他的字段和时间(teacherId&pupilId)。因此,我想返回按上次查看日期排序的学生列表,但并非所有学生都在LastViewedStudio中,但最后几个学生举例来说,我想在按日期排序后显示所有留下的记录,无论顺序如何,我怎么做 我可以不做最后一部分 select * from Pupil as p, ( select * from LastViewedPupil lvp where lvp.tea

我有两张表,例如:教师和学生,以及表LastViewedStudio,其中包含观察他的字段和时间(teacherId&pupilId)。因此,我想返回按上次查看日期排序的学生列表,但并非所有学生都在LastViewedStudio中,但最后几个学生举例来说,我想在按日期排序后显示所有留下的记录,无论顺序如何,我怎么做

我可以不做最后一部分

select * from Pupil as p, (
    select * from LastViewedPupil lvp where lvp.teacherId = 5 ORDER BY lastViewDate
) as lvp where lvp.pupilId = p.pupilId;  

或者我应该在LastViewDatePuilor中为所有学生添加相应的记录,还是需要加入表本身(听起来很尴尬)?

您应该试试这个:

SELECT p.*
LEFT JOIN LastViewedPupil lvp ON p.id = lvp
WHERE lvp.teacher_id = 5
ORDER BY lvp.lastViewDate DESC
我不确定该查询是将
NULL
放在开头还是结尾。如果结果排序不正确,请尝试其他方法。我使用
案例
对数据进行重新排序

SELECT p.*, 
   CASE WHEN lvp.lvp.lastViewDate IS NULL THEN 1 ELSE 0, END AS notNullfirst FROM Pupil p
LEFT JOIN LastViewedPupil lvp ON p.id = lvp
WHERE lvp.teacher_id = 5
ORDER BY notNullfirst, lvp.lastViewDate DESC

我不太清楚你在问什么,但我认为
选择p.*,lvp.*从瞳孔中选择p,LastViewed瞳孔作为p,LastViewed瞳孔作为lvp,其中lvp.teacherId=5,lvp.pupilId=p.pupilId按lvp排序。lastViewDate
应该包括你哦,这是同样的事情,但我需要在这个记录中添加所有的内容,即瞳孔表中留下的内容,除了命令-他们应该留在列表中的第一个第二个帮助!