您好,请更正我的查询
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);
Run Code Online (Sandbox Code Playgroud)
因为与表结合而应该使用case.我明白了
错误:缺少关键字
对于此查询
那不是多么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)
)
Run Code Online (Sandbox Code Playgroud)
我会基于你正在使用的值来评论它,它似乎s1.sem是一个数字而且s1.met1是一个字符.对我来说,当一个数字与一个字符串进行比较时,这是非常可疑的.
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |