sql select查询IN子句不返回任何内容
是否可以从IN子句中传递的参数中获取任何值,其中1值不返回任何值 例如: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 (
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又写了一点,你试试每个部分怎么样