我有一个从用户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
答案 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之后的部分是您正在寻找的部分吗?