У меня следующая проблема в Oracle 11g:
У меня есть таблица TBL_PERSON, в которой перечислены все пользователи моего приложения, и мне нужно выяснить всех пользователей базы данных, которые НЕ упомянуты в TBL_PERSON.
Количество tbl_person равно 4207.
Количество dba_users / all_users равно 4244. Это означает, что разница в 37 пользователей - это системные пользователи, не использующие приложение.
Пока все хорошо.Как идентифицировать пользователей системы?
ID в таблице INT_PERSON равен USER_ID в dba_users.Я ожидаю, что список всех пользователей из таблицы dba_users не указан в INT_PERSON.(37 строк)
Я попробовал следующее:
SELECT *
FROM dba_users
WHERE USER_ID
NOT
IN (SELECT ID
FROM LCM.TBL_INT_PERSON);
В результате получилось 3804 строки, также показывающих пользователей из INT_PERSON -> не то, что я ожидал
Затем попытался:
SELECT *
FROM dba_users a
WHERE USER_ID
NOT
IN (SELECT ID
FROM LCM.TBL_INT_PERSON b
where b.id = a.User_id);
Что не имеет значения.
Эти сообщения не решают мою проблему:
Найти записи в одной таблице, в которой нет соответствующих данных.существует в другой таблице
Выберите записи из таблицы, которых нет в другой таблице
Или это секрет таблицы dba_users?Где моя ошибка?