我在SELECT子句中使用EXISTS语句有一点问题.我有表ITEM和SUBITEM,如果存在任何给定类型的子项,我想返回布尔标志:
SELECT item.id, item.f1, item.f2, item.f3,
EXISTS(select sub.id from schema.subitem sub where sub.item_id = item.id
AND type='standard') as has_standard
FROM schema.item item
Run Code Online (Sandbox Code Playgroud)
但是,我收到错误消息:
错误:[IBM] [CLI驱动程序] [DB2] SQL0104N意外的令牌"." 被发现在"."之后.预期的代币可能包括:",)".SQLSTATE = 42601 SQLState:42601 ErrorCode:-104
这个例子是简化的,表名不是真的,这只是一个在DB2上请求EXISTS子句语法的例子.据我所知,在PostgreSQL或Oracle上使用该语法没有问题...
把case
它周围的语句:
SELECT item.id, item.f1, item.f2, item.f3,
(case when EXISTS (select sub.id
from schema.subitem sub
where sub.item_id = item.id AND type='standard'
)
then 1 else 0
end) as has_standard
FROM schema.item item;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11385 次 |
最近记录: |