が含まれている選択は、私は次の表を持ってフィールドは、特定の項目およびその他の
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のみを返す必要があります)。
が含まれている選択は、私は次の表を持ってフィールドは、特定の項目およびその他の
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のみを返す必要があります)。
あなたは集約と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;
それとも、あなたはこのクエリを使用することができexists
Select distinct Id from table t
Where trans_id = 20
and exists (Select * from table
Where ID = t.Id
and trans_id != 20)
使用:
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があることを保証します。動作します
:
SELECT DISTINCT ID FROM MyTable WHERE Trans_id = 20
いいえ、それは文句を言いません。 OPのサンプルでは '2、3、4'を返します.3と4は正しくありません。他のTrans_IDがないからです –