是否可以从IN子句中传递的参数中获取任何值,其中1值不返回任何值。
示例:
select id, translation
from <table>
where id in (1,2,36)
and (locale_id='EN' )
如果id 2在表中没有值,是否可以返回NULL代替根本没有值。 目前它只返回2个值。
答案 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