我是Postgresql / sqlalchemy的新手,并且有一个查询问题。我有以下联接表
select classroom.name, student.class_name, student.full_name
from classroom
inner join student on classroom.name = student.class_name
哪个返回以下内容:
classroom.name | student.class_name | student.full_name
-------------------------------------------------------
Math | Math | Joe
Math | Math | Kim
Math | Math | Chris
English | English | Joe
English | English | Kim
我想做的是过滤此查询,以便如果某个学生(仅允许克里斯)存在于student.name列中,它将不返回教室名称为Math的任何行,因为其中一项具有克里斯。所以我正在寻找的输出是
classroom.name | student.class_name | student.full_name
-------------------------------------------------------
English | English | Joe
English | English | Kim
我尝试添加一个Where student.full_name = 'Chris'
,但这只隐藏了一个条目,而仍然保留了另外两个条目。
任何帮助将不胜感激,谢谢!
答案 0 :(得分:0)
添加一个WHERE
子句,该子句排除不需要的行:
...
WHERE NOT EXISTS (
SELECT 1
FROM classroom c
JOIN student s ON c.name = s.class_name
WHERE c.name = classroom.name
AND s.full_name = 'Chris'
)
此答案是根据知识共享2.0许可提供的。
您必须在功课上给我功劳。