Я не назвал бы себя знатоком SQL. Я просто знаю как мне выбирать, вставлять и изменять нужные мне данные. Поэтому решить мне такую задачку просто с ходу не хватило знаний. Хотя она не такая и сложная.
Предыстория: регистрировал 1000 пользователей через http-запросы к системе. Получил отказы в 70% случаев. Регистрировал по маске u000
Задача: Выбрать список пользователей не зарегестрированых в системе. Если известен список зарегестрированых пользователей. А список пользователей, которых надо зарегестрировать соответствует определенной с буквенным префиксом и цифровым суффиксом, вырастающим инкрементально с шагом 1.
Получил решения от своих коллег разработчиков :)
Решение №!
select
a.id
from
(select 'u'||rownum id from dual connect by rownum <= 1000) a
where
a.id not in (
select u.user_name from users u
where u.un like 'u%'
)
;
Решение №2
select idx, user_name
from
(select rownum idx from dual connect by rownum <= 1000) seq
left outer join users u on to_char(seq.idx) = substr(un, 2, length(un)-1) and un like 'u%'
where un is null
order by idx;
Комментариев нет:
Отправить комментарий