首页 > 解决方案 > 从列值满足一个条件但不满足另一个条件的多行中选择 ID

问题描述

你好我有以下问题。

我有一个像这个sql fiddle中的那个 表这个表定义了一个关系,它包含来自其他两个表的 ID

示例值

| FirstID  | SecondID  | 
|  1       |     1     |
|  1       |     2     |
|  1       |     3     |
|  2       |     1     |
|  2       |     2     |
|  2       |     3     |
|  2       |     4     |
|  2       |     5     |
|  3       |     1     |
|  3       |     2     |
|  3       |     3     |

我想选择所有满足以下条件的 FirstID。 它们对应的 SecondID 在 1-3 范围内,而不在 4-5 范围内

例如,在这种情况下,我们需要 FirstID 1 和 3。

我尝试了以下查询

SELECT FirstID from table 
WHERE SecondID IN (1,2,3) AND SecondID NOT IN (4,5)

SELECT  FirstID,SecondID
FROM(
   SELECT FirstID, SecondID
   FROM  table
   WHERE  SecondID in (1,2,3,4,5) ) 
WHERE SecondID NOT IN (4,5)

但我没有得到我想要的正确结果。

获取我想要的数据的正确查询是什么?

标签: sql

解决方案


SELECT FirstID
FROM table
WHERE SecondId in (1,2,3) --Included values
AND FirstID NOT IN (SELECT FirstID FROM test
                    WHERE SecondId IN (4,5)) --Excluded values

推荐阅读