如何两两同时应用Microsoft SQL IN运算符?
我在Microsoft SQL中有一个名为Account的表如何两两同时应用Microsoft SQL IN运算符?,sql,sql-server,Sql,Sql Server,我在Microsoft SQL中有一个名为Account的表 Name AccountNumber IDNumber Alpha 1 Z Bravo 2 Y Charlie 3 X Delta 4 W Echo 5 W <---- Echo has same IDNumber as Delta. This i
Name AccountNumber IDNumber
Alpha 1 Z
Bravo 2 Y
Charlie 3 X
Delta 4 W
Echo 5 W <---- Echo has same IDNumber as Delta. This is allowed.
这将正确返回帐户
SELECT * FROM #Account
WHERE AccountNumber IN ('2','4','1') AND IDNumber IN ('Y','W','X')
Name AccountNumber IDNumber
Bravo 2 Y
Delta 4 W
但这是不正确的
SELECT * FROM #Account
WHERE AccountNumber IN ('4','5') AND IDNumber IN ('W','X')
Name AccountNumber IDNumber
Delta 4 W
Echo 5 W
我需要4-W配对和5-X配对
我的目标是使用Linq从C实现这一点。作为第一次尝试,我想看看这在SQL中是否可行。使用值生成列表,然后加入:
我们可以动态地使用它吗?与在Values.@T.kowshikYedida中使用select语句一样,要将行/列作为参数传递以在查询中使用,可以使用表值参数、JSON或XML。如果我没有错,我们可以使用字符串连接。从表中选择*从表中选择concatAccountNumber,从表中选择concatAccountNumber中的IDnumber,从对中选择IDnumber。我不知道使用它是否有任何缺点。另外,我们可以使用where exists和表。好吧,若您需要知道它在SQL中是否可行,那个么就不要要求使用LINQ/EF核心。因为可以肯定的是,这在SQL中是可能的,但像current EF Core这样的ORMs/LINQ转换器就不是这种情况,它无法转换/传递/执行与内存中非原语(即单个值)集合的连接。因此,请删除linq和entity framework核心标记,并查看/接受Sql Server专家的说法。但如果您动态构建原始SQL,它将不会帮助您在EF核心异常中实现它
SELECT * FROM #Account
WHERE AccountNumber IN ('2','4','1') AND IDNumber IN ('Y','W','X')
Name AccountNumber IDNumber
Bravo 2 Y
Delta 4 W
SELECT * FROM #Account
WHERE AccountNumber IN ('4','5') AND IDNumber IN ('W','X')
Name AccountNumber IDNumber
Delta 4 W
Echo 5 W
SELECT a.*
FROM #Account a JOIN
(VALUES ('2', 'Y'), ('4', 'W'), ('1', 'X')
) v(AccountNumber, IDNumber)
ON a.AccountNumber = v.AccountNumber AND
a.IDNumber = v.IDNumber;