2017-01-06 5 views
0

が含まれている選択は、私は次の表を持ってフィールドは、特定の項目およびその他の

ID | Trans_id 
1 | 10 
2 | 20 
2 | 20 
2 | 20 
2 | 20 
2 | 10 
3 | 20 
4 | 20 
5 | 10 
6 | 10 

私はTRANS_IDは20 が含まれているIDは関係なく、それが何であるか(で、別の別の番号を持っていない方法を選択しないと言いますこの例では、ID 2のみを返す必要があります)。

答えて

2

あなたは集約とhaving使用することができます。

select id 
from t 
group by id 
having sum(case when trans_id = 20 then 1 else 0 end) > 0 and 
     sum(case when trans_id <> 20 then 1 else 0 end) > 0; 
2

それとも、あなたはこのクエリを使用することができexists

Select distinct Id from table t 
Where trans_id = 20 
    and exists (Select * from table 
       Where ID = t.Id 
        and trans_id != 20) 
1

使用:

SELECT ID 
FROM Table1 
WHERE ID IN (SELECT DISTINCT ID FROM Table1 WHERE Trans_id = 20) 
GROUP BY ID 
HAVING COUNT(DISTINCT(Trans_id)) > 1 

サブクエリだけTrans_id = 20が含まれているIDを選択します、GROUP BY ID + HAVING COUNT(DISTINCT(Trans_id)) > 1は、このグループに他のTrans_idがあることを保証します。動作します

-1

SELECT DISTINCT ID FROM MyTable WHERE Trans_id = 20 
+0

いいえ、それは文句を言いません。 OPのサンプルでは '2、3、4'を返します.3と4は正しくありません。他のTrans_IDがないからです –

関連する問題