gpt4 book ai didi

sql - 为什么 IN 运算符在传递重复值(value1、value1 ....)时返回不同的选择

转载 作者:行者123 更新时间:2023-12-02 21:56:12 25 4
gpt4 key购买 nike

使用 SQL Server 2008

为什么 IN 运算符在选择重复值时返回不同的值?

@temp

x |      1     |       2     |      3
--+------------+-------------+------------
1 | first 1 | first 2 | first 3
2 | Second 1 | second 2 | second 3

当我执行此查询时

SELECT * FROM @temp WHERE x IN (1,1) 

它会返回

x |      1     |       2     |      3
--+------------+-------------+------------
1 | first 1 | first 2 | first 3

我怎样才能让它返回这个:

x |      1     |       2     |      3
--+------------+-------------+------------
1 | first 1 | first 2 | first 3
1 | first 1 | first 2 | first 3

在这种情况下,IN 的替代方案是什么?

最佳答案

如果您想返回重复项,则需要将查询表述为连接in 只是测试每一行的条件。无论条件满足一次还是两次并不重要——该行要么保留,要么被过滤掉。

with xes as (
select 1 as x union all
select 1 as x
)
SELECT *
FROM @temp t join
xes
on t.x = xes.x;

编辑:

如果你有子查询,那就更简单了:

select *
from @temp t join
(<subquery>) s
on t.x = s.x

这将是join的“正常”使用。

关于sql - 为什么 IN 运算符在传递重复值(value1、value1 ....)时返回不同的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17754841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com