SELECT-CASE-IN-SELECT错误:[SQL0115]比较运算符IN无效。在查询DB2中 [英] SELECT-CASE-IN-SELECT error: [SQL0115] Comparison operator IN not valid. In query db2

查看:33
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆