SELECT-CASE-IN-SELECT错误:[SQL0115]比较运算符IN无效。在查询DB2中 [英] SELECT-CASE-IN-SELECT error: [SQL0115] Comparison operator IN not valid. In query db2
本文介绍了SELECT-CASE-IN-SELECT错误:[SQL0115]比较运算符IN无效。在查询DB2中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在DB2查询中遇到问题
我尝试运行此查询
SELECT t.* ,
CASE WHEN column in (SELECT data FROM otherTable WHERE conditions...)
then 5
else 0
end as 'My new data'
FROM table t
WHERE conditions....
但出现错误
[Error Code: -115, SQL State: 42601] [SQL0115] Comparison operator IN not valid.
当我将子查询更改为WHERE语句时,如下所示
SELECT t.*
FROM table t
WHERE column in (SELECT data FROM otherTable WHERE conditions...)
工作正常
为什么不在CASE语句中工作?这是DB2的限制?
是否可以做出等效的行为?
推荐答案
执行此操作的一种方法是左联接到表,并检查它是否不为NULL。
在大多数情况下,这将是最快的方式,因为SQL Server经过优化,可以非常快速地执行联接(但将取决于包括数据模型、索引、数据大小等在内的许多因素)。
这样:
SELECT t.* ,
CASE WHEN othertable.data is not null
then 5
else 0
end as 'My new data'
FROM table t
left join otherTable ON otherTable.column = data
WHERE conditions....
这篇关于SELECT-CASE-IN-SELECT错误:[SQL0115]比较运算符IN无效。在查询DB2中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文