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

时间:2015-03-17 09:35:08

标签: sql sql-server

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

示例:

 select id, translation  
 from   <table>  
 where id in (1,2,36)    
    and (locale_id='EN' )

如果id 2在表中没有值,是否可以返回NULL代替根本没有值。 目前它只返回2个值。

1 个答案:

答案 0 :(得分:4)

试试这个:

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' )

你至少可以获得每个身份的记录

cte生成3条记录,每条记录都有一个值v我更喜欢使用cte语法而不是以下版本(应该这样做)

select * 
from (values (1),(2),(36)) v(v)
left join table1 t1 on t1.id=v.v and (t1.locale_id='EN' )

左连接很好地读了你自己:http://www.w3schools.com/sql/sql_join_left.asp