gpt4 book ai didi

sql - T-SQL 如何匹配多行

转载 作者:行者123 更新时间:2023-12-05 03:14:07 24 4
gpt4 key购买 nike

有两个表,包表和产品表。就我而言,包裹中包含多种产品。我们需要识别多个产品是否可以匹配已经在包裹记录中的包裹。下面是一些脚本。

DECLARE @tblPackage TABLE(
PackageID int,
ProductID int
)

INSERT INTO @tblPackage VALUES(436, 4313)
INSERT INTO @tblPackage VALUES(436, 4305)
INSERT INTO @tblPackage VALUES(436, 4986)

INSERT INTO @tblPackage VALUES(437, 4313)
INSERT INTO @tblPackage VALUES(437, 4305)

INSERT INTO @tblPackage VALUES(442, 4313)
INSERT INTO @tblPackage VALUES(442, 4335)

INSERT INTO @tblPackage VALUES(445, 4305)
INSERT INTO @tblPackage VALUES(445, 4335)

enter image description here

DECLARE @tblProduct TABLE(
ProductID int
)

INSERT INTO @tblProduct VALUES(4305)
INSERT INTO @tblProduct VALUES(4313)

enter image description here

我们有4305和4313这两个产品,那么我需要检索匹配的包裹记录437。只有完全匹配的才能退回,所以包裹436不是正确的。制作多行查询子句并不容易。请问有人可以有什么建议吗?谢谢。

最佳答案

试试这个。 SQLFIDDLE DEMO

Declare @cnt Int
Select @cnt = count(distinct ProductID) from tblProduct

SELECT B.packageid
FROM (SELECT packageid
FROM tblpackage
GROUP BY packageid
HAVING Count(productid) = @cnt) A
JOIN tblpackage B
ON a.packageid = b.packageid
WHERE EXISTS (SELECT 1 FROM tblproduct c WHERE c.productid = b.productid)
GROUP BY B.packageid
HAVING Count(DISTINCT B.productid) = @cnt

关于sql - T-SQL 如何匹配多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27059247/

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