获得具有相同价值的ID

时间:2014-06-12 19:08:02

标签: sql join count

我有一个从用户ID和另一个值左边连接的表:

+ - - - - - - - - - +
¦ Id      ¦  Code   ¦
+ - - - - + - - - - +
¦ 1       ¦     0   ¦
+ - - - - + - - - - +
¦ 1       ¦     1   ¦
+ - - - - + - - - - +
¦ 2       ¦     2   ¦
+ - - - - + - - - - + 
¦ 2       ¦     2   ¦
+ - - - - + - - - - + 
¦ 3       ¦     1   ¦
+ - - - - + - - - - + 
¦ 3       ¦     1   ¦
+ - - - - + - - - - + 

我试图编写一个SQL查询,它将返回所有代码具有相同值的ID。

Id所有Code=1应该只返回3而不是1,因为它有0 {{1}某处。

我使用它来获取所有代码值相同的Id,除了我只需要指定代码值1:

Code

3 个答案:

答案 0 :(得分:1)

这样的东西?

DECLARE @id INT
SET @id = 1 -- Code to search for
SELECT DISTINCT
    Id
FROM
    CodeTable t1
WHERE
    Code = @id
    AND
    NOT EXISTS (SELECT * FROM CodeTable t2 WHERE t2.Id = t1.Id AND t2.Code <> @id)

答案 1 :(得分:1)

我认为从另一方面更容易找到所有不符合要求的记录并将其排除在外:

SELECT distinct ID FROM tbl 
WHERE tbl.ID NOT IN (SELECT ID
FROM tbl 
GROUP BY ID,CODE
HAVING CODE != 1) 

DEMO here

答案 2 :(得分:0)

这样的事情:

SELECT ID, MAX(CODE) CODE, COUNT(1) CNT
FROM TABLE 
GROUP BY ID
HAVING MAX(CODE) = MIN(CODE) AND MAX(CODE) = 1

不确定AND之后的部分是您正在寻找的部分吗?