您好,请更正我的查询
select * from table S1
WHERE S1.stu ='12345'
AND S1.sem = (Select Case When col2 > col4 Then col2 Else col4 End From table2)
And S1.met1 in (case when (S1.sem = 1) then ('1', 'D', 'F' )
when (S1.sem = 2) then ('1', '5', '7', )
when (S1.sem = 3) then ('1', 'D', 'F' )
else s1.sem end);
由于与表结合,应使用大小写。 我正在
错误:缺少关键字
此查询
答案 0 :(得分:6)
这不是case
的工作原理。它是标量表达式,只返回一个值。
将其替换为基本逻辑:
where ( (S1.sem = 1 and s1.met1 in ('1', 'D', 'F' ) ) or
(S1.sem = 2 and S1.met1 in ('1', '5', '7') ) or
(S1.sem = 3 and s1.met1 in ('1', 'D', 'F' ) ) or
(s1.sem not in (1, 2, 3) and s1.met1 = s1.sem)
)
我会根据您使用的值对此进行评论,似乎s1.sem
是一个数字而s1.met1
是一个字符。对我来说,当一个数字与一个字符串进行比较时,这是非常可疑的。