【发布时间】:2011-03-03 09:14:14
【问题描述】:
我们正在尝试执行一个选择查询,该查询在 case 语句中使用列名,如果在 where 子句中使用相同的列名,它将进入无限循环。
例如
select empId,empName,
(case when empDept in ('A','B','C') then empAge
when empDept in ('E','F','G') then empExp
else 'Dept-Not found' end)
from employee where empDept in ('A','B','C','D','E','F','G')
即使我们将 or 子句放在 where 子句而不是 in 中也没关系。
编辑:编辑查询
【问题讨论】:
-
SQL 不执行“无限循环”,那么这里到底发生了什么?您缺少 CASE 表达式的 END 关键字,这意味着 SQL 无法按原样工作。
-
即使 End 我也面临同样的问题
-
是什么让你觉得存在无限循环?你如何运行查询?员工表有多大?
-
可能有 10000 条左右的记录。在 Informix 中只需 6 秒执行相同的查询时,在 5 分钟到 10 分钟的意义上是无限的
-
从什么时候开始有 5 分钟或 10 分钟是“无限的”? CASE 有什么奇特的功能吗?