要问甚至搜索的难题。这就是我的困境。我需要在一个只有列中某些键的实例的表中获取ID。
示例:
SELECT DISTINCT(myID1) as mainID
FROM table1
WHERE myID2 IN (1, 2, 3, 4, 5)
但是,我不想返回任何myID1值(在table1中),它们具有除1,2,3,4,5之外的myID2值(在table1中)。
所以,这是示例表....
id | myID1 | myID2
---+-------+------
1 | 234 | 2
2 | 234 | 3
3 | 235 | 2
4 | 235 | 6
在这种情况下,我只想返回值 234 。 235表格中的myID2值 6 。
希望这是有道理的。任何帮助将不胜感激。
答案 0 :(得分:1)
你可以使用它。
DECLARE @Temp TABLE (id INT, myID1 INT, myID2 INT)
INSERT INTO @Temp VALUES
(1 , 234 , 2 ),
(2 , 234 , 3 ),
(3 , 235 , 2 ),
(4 , 235 , 6 )
SELECT DISTINCT myID1 as mainID
FROM @Temp T
WHERE
T.myID2 IN (1, 2, 3, 4, 5)
AND NOT EXISTS ( SELECT * FROM @Temp T1 WHERE T1.myID2 NOT IN (1, 2, 3, 4, 5) AND T.myID1 = T1.myID1)
结果:
mainID
-----------
234
答案 1 :(得分:0)
你可以这样做;
SELECT DISTINCT(myID1) as mainID FROM table1
WHERE myID2 IN (1,2,3,4,5) and myID1 not in (SELECT DISTINCT(myID1) as mainID FROM table1
WHERE myID2 NOT IN (1,2,3,4,5))
答案 2 :(得分:0)
您可以使用EXCEPT
。一般伪代码的值为EXCEPT
,而不是值。
DECLARE @table1 TABLE (id int, myID1 int, myID2 int)
INSERT INTO @table1
VALUES (1, 234, 2), (2, 234, 3), (3, 235, 2), (4, 235, 6)
SELECT DISTINCT(myID1) as mainID
FROM @table1
WHERE myID2 IN (1, 2, 3, 4, 5)
EXCEPT
SELECT DISTINCT(myID1) as mainID
FROM @table1
WHERE myID2 NOT IN (1, 2, 3, 4, 5)
提供输出:
mainID
234