содержать 1к строк, другая 2к, эти опции определяет пользователь), пытался это сделать через NOT IN, т.е. первую таблицу создаем через обычный rownum, а потом из изначальной таблицы через NOT IN берем то, чего нет в созданной, и т.д. Но NOT IN выкидывает дубликаты, что логично, конечно, но мне нужно, чтобы сумма строк всех таблиц равнялась изначальной(но без дубликатов так не получится). Нужен какой-то аналог MINUS ALL из оракла, есть идеи?
P.S. Использую Oracle 12c
Сделайте сначала ключ (первичный ключ), потому ужэ думайте как ломать систему дальшэ.
Там динамические данные, т.е. мне нужно любую таблицу уметь делить.
В любой таблицэ делайте первичный ключ.
У меня нет доступа к ddl, это уже готовые данные.
Тогда обратитесь к программисту, который создавал эту базу данных. Поставьте ему на вид, что RDBMS не в 1НФ -- это плохая идея.
Согласен, к сожалению, такой возможности нет.
Ну, перегрузите к себе в СУБД, где создайте так первичный ключ. А вообще -- как вы собрались делить на две таблицы, не имея доступа к DDL?
У меня нет доступа к DDL к той таблице, которую надо разделить, а даже если бы был, я не могу там ничего менять.
Ну, вообще, идея перегрузить к себе с первичным ключом неплохая, но чувствую, что это очень медленно будет.
Ну, "очень медленно" -- это не число. Вопрос в том -- устроит это бизнес и его процэссы или нет. Если устроит -- то и фиг с ним, если нет -- то пусть думают как дать что-то ещё (клон базы на другом жэлезе/модификацыю основной/etc)
Ну пусть будет так, спасибо.
То есть, всегда конечно можно извратиться -- там есть какие-то внутренние структуры у oracle, которые дадут временный номер, есть всякие пересчёты количества таких строк, есть возможность выбирать только полностью одинаковые все строки... Но это всё выглядит каким-то абсолютно непродуктивным извращением. Зачем брать лучшую RDBMS, и творить с ней ахинею?
Обсуждают сегодня