首页 > 解决方案 > 使 SQL 查询返回重复行而不使用 UNION ALL 关闭

问题描述

我有一个用例暗示即使多次指定相同的 id 也会返回所有记录

select d.id from data d where d.id in (1420552,  1420553)
union all
select d.id from data d where d.id in (1420552, 1420553)

由于“IN”谓词只是被翻译为所有指定值之间的“OR”,它不会给我想要的结果。

select d.id from data d where d.id in (1420552,  1420553, 1420552, 1420553)

因此,我想知道是否有任何替代方法可以获得所需的结果。先感谢您。

在此处输入图像描述

标签: javasqldb2db2-luw

解决方案


非常奇怪的用例...

但是假设您的 Db2 平台和版本支持表值构造函数...

尝试

with cte(id) 
  as (values (1420552),(1420553)
            ,(1420552),(1420553) )
select d.id
  from data d
       join cte c on d.id = c.id;

推荐阅读