sql select查询IN子句不返回任何内容

sql select查询IN子句不返回任何内容,sql,sql-server,Sql,Sql Server,是否可以从IN子句中传递的参数中获取任何值,其中1值不返回任何值 例如: select id, translation from <table> where id in (1,2,36) and (locale_id='EN' ) 选择id,翻译 从…起 其中id位于(1,2,36) 和(locale_id='EN') 若ID2在表中并没有值,是否可以返回NULL来代替并没有值。 目前它只返回2个值 试试这个: with cte as (

是否可以从IN子句中传递的参数中获取任何值,其中1值不返回任何值

例如:

 select id, translation  
 from   <table>  
 where id in (1,2,36)    
    and (locale_id='EN' )
选择id,翻译
从…起
其中id位于(1,2,36)
和(locale_id='EN')
若ID2在表中并没有值,是否可以返回NULL来代替并没有值。 目前它只返回2个值

试试这个:

with cte as (
   select * 
   from (values (1),(2),(36) ) v(v)
)
select * 
from cte 
left join table1 t1 on t1.id=cte.v and (t1.locale_id='EN' )
您将至少获得每个id的记录

cte生成3条记录,每条记录都有一个值
v
与下面的版本相比,我更喜欢cte的语法(应该是相同的)

左图请仔细阅读:

尝试以下方法:

with cte as (
   select * 
   from (values (1),(2),(36) ) v(v)
)
select * 
from cte 
left join table1 t1 on t1.id=cte.v and (t1.locale_id='EN' )
您将至少获得每个id的记录

cte生成3条记录,每条记录都有一个值
v
与下面的版本相比,我更喜欢cte的语法(应该是相同的)


左边的join可以自己阅读:

您不能从
SELECT
语句生成行。行要么存在,要么不存在。您需要有一个ID为的表,并对其执行左联接。您可以尝试将值放入临时表中,然后使用
左外部联接
是否可以显示具有预期输出的示例数据?无法从
SELECT
语句生成行。行要么存在,要么不存在。您需要有一个ID为的表,并对其进行左联接。您可以尝试将值放入临时表中,然后使用
左外部联接
您可以显示具有预期输出的示例数据吗?太好了,您可以对其进行一点扩展吗。因为我做了一个快速的更改,并添加了我需要的专栏。@VijayTripathi又写了一点,你可以试一下每一部分吗。由于我做了一个快速更改并添加了我需要的列。@VijayTripathi又写了一点,你试试每个部分怎么样