MySQL 5.5数据库查询帮助
我对DB查询有一些问题 我有两个表,学生字段:FirstName、LastName、StdSSN和teachers-TFirstName、TLastName、TSSN,在本例中,我已经对它们进行了精简。我需要执行一个查询,该查询将返回除教师以外的所有学生 我有疑问MySQL 5.5数据库查询帮助,sql,mysql,Sql,Mysql,我对DB查询有一些问题 我有两个表,学生字段:FirstName、LastName、StdSSN和teachers-TFirstName、TLastName、TSSN,在本例中,我已经对它们进行了精简。我需要执行一个查询,该查询将返回除教师以外的所有学生 我有疑问 SELECT student.FirstName, student.LastName FROM `student`,`teachers` WHERE student.StdSSN=teachers.TSSN 这给了我一份同时也是学生
SELECT student.FirstName, student.LastName
FROM `student`,`teachers`
WHERE student.StdSSN=teachers.TSSN
这给了我一份同时也是学生的所有教师的名单,但没有给我一份非教师的学生名单,所以我尝试改为:
SELECT student.FirstName, student.LastName
FROM `student`,`teachers`
WHERE student.StdSSN!=teachers.TSSN
这给了我一个有很多重复值的所有学生的列表,所以我有点被困在这里。如何更改内容以返回所有非教师学生的列表?我一直在考虑内联/外联/自联,并且玩了几个小时,但是事情变得复杂了,我什么都没完成,所以我几乎放弃了
有人能给我一些建议吗?我以前确实看到过这个查询,它非常简单,但我在某个地方失败了。使用NOT IN
使用不存在
使用左连接/左连接为空
我在《教师》中的任何专栏中都使用了该专栏,而不是加入的专栏
比较:
。否则,左JOIN/IS NULL是MySQL的最佳选择。使用NOT IN
使用不存在
使用左连接/左连接为空
我在《教师》中的任何专栏中都使用了该专栏,而不是加入的专栏
比较:
。否则,LEFT JOIN/IS NULL是MySQL的最佳选择。@Eric Petroleje:MINUS是Oracle特有的,而不是ANSI EXCEPT和EXCEPT ALL。据我所知,MySQL也不支持。非常感谢你的帮助,我花了大约3个小时在这上面。今晚晚些时候我将阅读有关连接的内容。@user591162:Good join primer:@Eric petroleje:MINUS是Oracle特有的,与ANSI Exception和Exception ALL相比。据我所知,MySQL也不支持。非常感谢你的帮助,我花了大约3个小时在这上面。今晚晚些时候我将阅读有关连接的内容。@user591162:好的连接入门:部分原因是,它是针对大学DB类的,完整查询要复杂得多,我已经解决了,我只是不知道如何排除学生作为教师。部分原因是,它是针对大学DB类的,完整的查询要复杂得多,我已经解决了,我只是不知道如何将学生排除在教师之外。
SELECT s.*
FROM STUDENTS s
WHERE s.stdssn NOT IN (SELECT t.tssn
FROM TEACHERS t)
SELECT s.*
FROM STUDENTS s
WHERE NOT EXISTS (SELECT NULL
FROM TEACHERS t
WHERE t.tssn = s.stdssn)
SELECT s.*
FROM STUDENTS s
LEFT JOIN TEACHERS t ON t.tssn = s.stdssn
WHERE t.column IS NULL