Java 创建一个select查询,如果该id不存在,则该id在SQL中应返回null
假设表X有a、b列,数据如下 我需要的查询结果输出是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
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语句的一部分放置(以确保主表上仍然存在所有行)