Java 创建一个select查询,如果该id不存在,则该id在SQL中应返回null

Java 创建一个select查询,如果该id不存在,则该id在SQL中应返回null,java,sql-server,oracle,Java,Sql Server,Oracle,假设表X有a、b列,数据如下 我需要的查询结果输出是select*from X,其中b在(111777888) 如何实现它?一个想法是构建一个包含您搜索的值的派生表,然后使用左联接将原始表带入。在SQL Server中,您将使用值(): 我添加了一个列,该列保存最初搜索的值,因为它对我更有意义——如果需要,您可以删除它 Oracle不支持此语法;(更长的)alernative是来自dual的union all和: select v.b, t.* from ( select 111 b

假设表X有a、b列,数据如下

我需要的查询结果输出是
select*from X,其中b在(111777888)


如何实现它?

一个想法是构建一个包含您搜索的值的派生表,然后使用
左联接将原始表带入
。在SQL Server中,您将使用
值()

我添加了一个列,该列保存最初搜索的值,因为它对我更有意义——如果需要,您可以删除它

Oracle不支持此语法;(更长的)alernative是来自dual的union all

select v.b, t.*
from (
    select 111 b from dual
    union all select 777 from dual
    union all select 888 from dual
) v
left join mytable t on t.b = v.b
order by v.b

一个想法是构建一个包含您搜索的值的派生表,然后使用
左连接将原始表带到
。在SQL Server中,您将使用
值()

我添加了一个列,该列保存最初搜索的值,因为它对我更有意义——如果需要,您可以删除它

Oracle不支持此语法;(更长的)alernative是来自dual的union all

select v.b, t.*
from (
    select 111 b from dual
    union all select 777 from dual
    union all select 888 from dual
) v
left join mytable t on t.b = v.b
order by v.b

只需左键连接同一个表

SELECT left_x.* 
   FROM x primary_x
   LEFT JOIN X left_x ON primary_x.a = left_x.a AND left_x.b IN ('111', '777', '888') 

这里的关键是我们在select子句中使用左连接表(以获取空值),并将where子句作为join语句的一部分放置(以确保主表上仍然存在所有行)。

只需使用同一个表左连接即可

SELECT left_x.* 
   FROM x primary_x
   LEFT JOIN X left_x ON primary_x.a = left_x.a AND left_x.b IN ('111', '777', '888') 
这里的关键是在select子句中使用左连接表(以获取空值),并将where子句作为join语句的一部分放置(以确保主表上仍然存在所有行)