0

次のように定義されたテーブルがあります。

CREATE TABLE A_TEST  (
    "ID"   NUMBER NOT NULL ENABLE,
    "TYPE" VARCHAR2(20 BYTE),
)
  • ID は主キーではありません。
  • TYPE は NULL の可能性があります
  • 0、1、またはそれ以上の TYPE を持つことができる ID。

異なるタイプの ID を取得したい場合は、次のクエリを記述します。

SELECT distinct a1.ID FROM A_TEST a1
  JOIN A_TEST a2 on a2.ID = a1.ID and a2.type != a1.type

しかし、単一のタイプが定義されている Id を見つけるにはどうすればよいでしょうか?
(ID の場合は 1 行のみ、または id の場合は多くの行で型が定義されている行は 1 つだけ)

4

3 に答える 3

3

この例では、NULL値のタイプが考慮されています。

SELECT ID
FROM A_TEST
WHERE TYPE IS NOT NULL
GROUP BY ID    
HAVING COUNT(DISTINCT TYPE)=1

たとえば、SQLフィドルを参照してください

于 2012-10-12T13:37:21.240 に答える
3

明確化した後、要件は次のようです。

SELECT ID
FROM A_TEST
GROUP BY ID    
HAVING COUNT(DISTINCT TYPE) = 1
    OR COUNT(*) = 1 ;
于 2012-10-12T14:12:09.353 に答える