Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL 5.5数据库查询帮助_Sql_Mysql - Fatal编程技术网

MySQL 5.5数据库查询帮助

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 这给了我一份同时也是学生

我对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
这给了我一个有很多重复值的所有学生的列表,所以我有点被困在这里。如何更改内容以返回所有非教师学生的列表?我一直在考虑内联/外联/自联,并且玩了几个小时,但是事情变得复杂了,我什么都没完成,所以我几乎放弃了

有人能给我一些建议吗?我以前确实看到过这个查询,它非常简单,但我在某个地方失败了。

使用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