Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使SQL查询返回重复的行,而不使用UNION ALL close_Java_Sql_Db2_Db2 Luw - Fatal编程技术网

Java 使SQL查询返回重复的行,而不使用UNION ALL close

Java 使SQL查询返回重复的行,而不使用UNION ALL close,java,sql,db2,db2-luw,Java,Sql,Db2,Db2 Luw,我有一个用例,它意味着返回所有记录,即使多次指定了相同的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, 14205

我有一个用例,它意味着返回所有记录,即使多次指定了相同的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)
因此,我想知道是否有其他方法可以达到预期的效果。 先谢谢你


我可能会使用
交叉连接

select d.id
from data d cross join
     (select 1 from sysibm.sysdummy1 union all
      select 2 from sysibm.sysdummy1 union all
     ) n
where d.id in (1420552,1420553);
或者更简洁地说:

select d.id
from data d cross join
     (values (1), (2)) v(n)
where d.id in (1420552,1420553);
非常奇怪的用例

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

试一试


非常感谢你的回答。正如我在问题中提到的,同一Id可以在查询中多次使用,例如,如果在“in”谓词中使用1420552 5次,则查询必须返回5次Id=1420552的同一行,我希望我能够解释这些要求<代码>从数据d交叉连接(值(1)、(2))v(n)中选择d.id,其中d.id位于(142055214205521420552142055214205521420552142055214205521420553142055314205531420553)with cte(id) as (values (1420552),(1420553) ,(1420552),(1420553) ) select d.id from data d join cte c on d.id = c.id;