Так что мне нужен запрос, который будет выполняться в Oracle, который даст мне все идентификаторы для строк, в которых данное поле имеет одинаковое значение в каждой строке с этим идентификатором, и нет строк с таким идентификатором, которые не совпадаютзначение в данном поле.
Так что если у меня есть таблица, подобная этой, и я ищу значение X в FieldB:
ID FieldA FieldB FieldC
1 A X D
2 B X E
2 C Y F
1 D X G
3 E X H
3 F Z I
1 G X J
1 H X K
1 I X L
Я хочу что-то, что даст мне идентификаторТолько 1, потому что каждая строка для этого идентификатора имеет X в FieldB и нет строк для идентификатора 1, которые не имеют X в FieldB.Я попробовал следующий запрос:
SELECT
a.ID
from
tablename a
where
exists (select 1 from tablename where ID = a.ID and FieldB = 'X')
and not exists (select 1 from tablename where ID = a.ID and (FieldB != 'X' or FieldB is null))
Но я продолжаю получать сообщение об ошибке:
ORA-01652: unable to extend temp segment by 128 in tablespace TEMP_TS2
01652. 00000 - "unable to extend temp segment by %s in tablespace %s"
*Cause: Failed to allocate an extent of the required number of blocks for
a temporary segment in the tablespace indicated.
, которое, как я предполагаю, означает, что мой запрос ужасно неэффективен (или просто неверен).Я думаю, что есть простой способ сделать это, но я не нашел его.Есть мысли?