gpt4 book ai didi

SQL:IN 子句的问题,如何返回所有值,甚至是重复值

转载 作者:行者123 更新时间:2023-12-04 20:56:01 24 4
gpt4 key购买 nike

我要:

SELECT someID FROM table1 WHERE someID IN (1,1,2,2,3) 

返回

someID
1
1
2
2
3

虽然它现在只返回来自 IN 子句的不同值,如下所示:

someID
1
2
3

我使用 Microsoft SQL Server,我的表包含唯一的 someID 和 PLSRec。

CREATE TABLE [dbo].[table1](
[someID] [int] IDENTITY(1,1) NOT NULL,
[PLSRec] [int] NOT NULL,
CONSTRAINT [PK_table1] PRIMARY KEY CLUSTERED
(

怎么样?:

DECLARE @table2 table(someID int)

INSERT INTO @table2(someID) VALUES (184),(132);

SELECT * FROM @table2 LEFT JOIN table1 ON @table2.someID=table1.someID

(除了 INSERT INTO 语句返回“',' 附近的语法不正确)

最佳答案

这只能通过 Cartesian product 来完成,又名 JOIN。在本例中,INNER JOIN。您需要创建一个包含所有这些值的行集,如下所示:

SELECT 1 as someID
UNION ALL SELECT 1 as someID
UNION ALL SELECT 2 as someID
[...]

然后,在 JOIN 子句中使用它(如果您使用的是 MS SQL,则使用 CTE)

SELECT table1.someID FROM table1
JOIN (SELECT 1 as someID
UNION ALL SELECT 1 as someID
UNION ALL SELECT 2 as someID
[...]
) as table2 on table1.someID=table2.someID

当然,这是一个极其丑陋的解决方案。

关于SQL:IN 子句的问题,如何返回所有值,甚至是重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7427547/

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