2017-11-20 20 views
1

質問したり、検索することも難しい質問。ここに私のジレンマがあります。ある列の特定のキーのインスタンスしか持たないテーブルにIDを取得する必要があります。SQL Server:特定のキーのみを持つテーブルの値を取得する

例:

SELECT DISTINCT(myID1) as mainID 
FROM table1 
WHERE myID2 IN (1, 2, 3, 4, 5) 

この作品は、しかし、私は、1,2,3,4以外の(表1に)myID2値を持っている(表1に)任意のmyID1値を返すようにしたくありません5。

だから、ここで私は唯一の値を返すようにしたい、......たとえばテーブルです。この例では

id | myID1 | myID2 
---+-------+------ 
1 | 234 | 2 
2 | 234 | 3 
3 | 235 | 2 
4 | 235 | 6 

。 235のmyID2の値はです。

これはうまくいけばうまくいきます。どんな助けもありがとう。

答えて

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)) 
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 
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 
関連する問題