Обновите таблицу строками из другой таблицы, используя Loop в OracleDB

Я новичок в OracleDB и надеюсь помочь мне. У меня есть две таблицы, показанные на изображении ниже. Я хочу вставить любое количество строк из таблицы 2 в таблицу 1, используя цикл (возможно, в процедуре). Это может произойти путем повторения идентификаторов из таблицы 2 и вставки выбранного от меня в новую обновленную таблицу 1. Изображение: Обновите таблицу строками из другой таблицы, используя Loop в OracleDB

Вторая таблица должна остаться прежней, и я должен иметь возможность сделать это со всеми строками из таблицы 2, которые соответствуют моим потребностям. Я написал псевдокод, но не знаю, как его реализовать. Заранее спасибо!

Какие строки определенные строки? Почему они Дон, Харли и Джек, а не (например) Лютер, Харли и Кристиан?

Littlefoot 27.05.2019 17:42

Почему 5, 6 и 7 для новых идентификаторов?

forpas 27.05.2019 17:43

Почему Luther не копируется из таблицы2 в таблицу1, а другие записи копируются?

krokodilko 27.05.2019 17:46

@Littlefoot да, я должен иметь возможность делать это с любыми строками, которые захочу. Это всего лишь пример. Я обновлю свой вопрос сейчас.

NewJavaEnthusiast 27.05.2019 17:57
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
1
4
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это оригинальныйtable1:

SQL> select * from table1;

        ID NAME            PHONE
---------- ---------- ----------
         1 Bob            123456
         2 Jake           654975
         3 Dillan         252487

Если вы хотите «скопировать» любые строки, которые вы хотите, то простой вариант — это чистый оператор SQL INSERT, например.

SQL> insert into table1 (id, name, phone)
  2    select id, name, phone
  3    from table2
  4    where id = &par_id;
Enter value for par_id: 4

1 row created.

(&par_id — подстановочная переменная SQL*Plus)

Или вы можете указать несколько из них в виде списка IN, например.

SQL> insert into table1 (id, name, phone)
  2    select id, name, phone
  3    from table2
  4    where id in (5, 6);

2 rows created.

Результат тогда

SQL> select * from table1 order by id;

        ID NAME            PHONE
---------- ---------- ----------
         1 Bob            123456
         2 Jake           654975
         3 Dillan         252487
         4 Harley         265687
         5 Jack           244587
         6 Luther         259876

6 rows selected.

Или вы можете написать процедуру для этого (в цикле? Почему бы и нет, если она работает), но я предполагаю, что окончательный выбор зависит от того, что именно вы хотите сделать. В настоящее время я не вижу необходимости в PL/SQL.

большое спасибо, да, мне не нужно использовать процедуру или цикл, но я хотел иметь возможность использовать это каждый раз, когда я хочу вставить строки в таблицу 1 на основе таблицы 2. Я постараюсь решить это самостоятельно. Еще раз большое спасибо за вашу помощь!

NewJavaEnthusiast 27.05.2019 18:25

Другие вопросы по теме