Sql server SQL where子句“最多”匹配

Sql server SQL where子句“最多”匹配,sql-server,Sql Server,我在一个表中有以下两列 现在,根据从客户端发送的第二列中的数据id,我想从第一列返回id,如下所示: 客户端发送:13,返回24,25和26 客户端发送:1,返回24和26 客户端发送:1和13,返回24和26 客户端发送:1、12和13,返回26 如何构造这样的SQL查询?我尝试了in操作符,但在上一个案例中,它返回了错误的结果,其中客户端发送了1、12和13。它返回所有的,但在这个例子中我只需要26个 SELECT firstId FROM MyTable WHERE secondId in

我在一个表中有以下两列

现在,根据从客户端发送的第二列中的数据id,我想从第一列返回id,如下所示:

客户端发送:13,返回24,25和26

客户端发送:1,返回24和26

客户端发送:1和13,返回24和26

客户端发送:1、12和13,返回26

如何构造这样的SQL查询?我尝试了in操作符,但在上一个案例中,它返回了错误的结果,其中客户端发送了1、12和13。它返回所有的,但在这个例子中我只需要26个

SELECT firstId FROM MyTable WHERE secondId in(1,12,13)
您可以使用:

SELECT firstId
FROM tab
WHERE secondId in (1,12,13)
GROUP BY firstId
HAVING COUNT(DISTINCT secondId) = 3; -- number of elements from WHERE
另一种方法是使用INTERSECT:

你试过了吗?
SELECT firstId FROM tab WHERE secondId = 1
INTERSECT
SELECT firstId FROM tab WHERE secondId = 12
INTERSECT
SELECT firstId FROM tab WHERE secondId = 13;