a, 'A' b,33 c from dual
union all
select 1 id, 'A' b,45 c from dual
union all
select 1 id, 'B' b,1 c from dual
union all
select 2 id, 'B' b,4 c from dual
)
select * from t
where (a,b) in
(
select a,b from t
group by a,b
having count(*)>1
);
Возвращает
1a45
1a33
Может вернуть строки в другом порядке? Ведь явно не указана сортировка
Любой запрос, если явно не указана сортировка возвращает результат кучей. В твоём случае вывод кучи совпал с твоими ожиданиями и тебе просто повезло. Указывай сортировку и 100% результат будет всегда.
Отлично, я так и сказал на собесе, но сказали не верно... Ну как так можно)
ну они свою точку зрения аргументировали как-то?
Нет, перестали отвечать когда я сказал, что данные хранятся в не определённом порядке и нужно использовать сортировку)
Чат был)
ну в общем здесь можно, наверное, поспекулировать на тему того, что порядок union all определён (в плане запроса, который выполняется в конкретном порядке), и предикат по a, b его не меняет. но можно - не значит нужно.
Если не говорить о параллельных запросах с concurrent union all
Если определен порядок, первыми будут данные которые последними вошли? На счёт этого не знаю) Но в любом случае, with временная таблица, а там уже не будет сортировки
Зря, надо учить людей
Как учить то)) Им решать как работать, пусть так будет)
у вас одна строка это одна ветка union all. union all читается сверху вниз (это видно в плане, кроме случаев параллельного запроса которые упомянул Саян). выдан клиенту будет в том же порядке. если есть order by - будет в том порядке который задан order by
Запрос возвращает обратный порядок просто
ну вообще то, как проходит интервью - это не конфиденциальная информация, если уж на то пошло (а если она да - вас заставят подписать бумагу). вежливым считается не сливать тестовые задания и сложные вопросы, в которые люди вкладывали силы, но именно вежливым. и это явно не тот случай
Да я это понятно... Просто я хочу разобраться, может это я что-то не учёл) А что за компания и кто соьеседовал, это для меня не важно) главное опыт)
ну вам не важно, другим любопытно) нестандартный кейс всё-таки, чтобы интервью на середине прервали
Обсуждают сегодня