Sql 运算符不工作的SELECT语句
我有这两个表,我需要一个查询,该查询输出每个具有lvnr 050056而不是050054的成员 我有这两张桌子 我已尝试使用以下查询,但无法正常工作:Sql 运算符不工作的SELECT语句,sql,Sql,我有这两个表,我需要一个查询,该查询输出每个具有lvnr 050056而不是050054的成员 我有这两张桌子 我已尝试使用以下查询,但无法正常工作: SELECT s.matrnr, s.vorname, s.nachname FROM student s INNER JOIN teilgenommen t ON s.matrnr = t.matrnr WHERE (t.lvnr = 050056) AND (t.lvnr != 050054) 应该只显示ID为011111的Martin
SELECT s.matrnr, s.vorname, s.nachname
FROM student s
INNER JOIN teilgenommen t ON s.matrnr = t.matrnr
WHERE (t.lvnr = 050056) AND (t.lvnr != 050054)
应该只显示ID为011111的Martin Huber,但我两个都有
如果有任何建议,我将不胜感激。使用存在和不存在:
前导零表示lvnr实际上存储为字符串。如果是,则应使用单引号作为比较值。使用存在和不存在:
前导零表示lvnr实际上存储为字符串。如果是这样,则应使用单引号作为比较值。您可以执行以下操作:
选择
s、 matrnr,
s、 沃纳,
s、 纳希纳姆
从…起
学生s
内连接
选择
matrnr,
当lvnr='050056'时的maxcase,则1或0结束为a,
当lvnr='050054'时的最大情况,则1或0结束为b
从…起
泰尔格诺曼
分组
马特纳
a=1,b=0的
T
关于s.matrnr=t.matrnr
你可以做:
选择
s、 matrnr,
s、 沃纳,
s、 纳希纳姆
从…起
学生s
内连接
选择
matrnr,
当lvnr='050056'时的maxcase,则1或0结束为a,
当lvnr='050054'时的最大情况,则1或0结束为b
从…起
泰尔格诺曼
分组
马特纳
a=1,b=0的
T
关于s.matrnr=t.matrnr
这也可以通过聚合和用于筛选的having子句来解决:
select s.matrnr, s.vorname, s.nachname
from student s
inner join teilgenommen t on s.matrnr = t.matrnr
group by s.matrnr, s.vorname, s.nachname
having
max(case when t.lvnr = 050056 then 1 else 0 end) = 1
and max(case when t.lvnr = 050054 then 1 else 0 end) = 0
这也可以通过聚合和用于筛选的having子句来解决:
select s.matrnr, s.vorname, s.nachname
from student s
inner join teilgenommen t on s.matrnr = t.matrnr
group by s.matrnr, s.vorname, s.nachname
having
max(case when t.lvnr = 050056 then 1 else 0 end) = 1
and max(case when t.lvnr = 050054 then 1 else 0 end) = 0