Insert into t sql: INSERT (Transact-SQL) — SQL Server

mysql — SQL: INSERT INTO table(…) VALUES (…) с данными, полученными из других таблиц

Задавать вопрос

спросил

Изменено
3 года, 3 месяца назад

Просмотрено
539 раз

Спасибо, что прошли мимо. Я знаю базовый синтаксис SQL и не могу найти способ выполнить эту задачу.

Мне нужно создать хранимую процедуру, которая вставляет данные из одной таблицы в другую, а также извлекает данные из многих других. Предположим, у меня есть эти таблицы со столбцами:

  1. пользователей

    • имя (varchar)
    • sub_id (целое число)
    • dub_id (целое число)
  2. tmp_users

    • имя (varchar)
    • под_имя (varchar)
    • dub_name (varchar)
  3. субтитры

    • идентификатор (целое число)
    • имя (varchar)
  4. дабы

    • идентификатор (целое число)
    • имя (varchar)

В псевдокоде я должен сделать что-то вроде этого:

 ВСТАВИТЬ В пользователей (имя, sub_id, dub_id)
ВСЕ СТРОКИ ИЗ ЗНАЧЕНИЙ tmp_users (
    имя = tmp_users. name,
    sub_id = ВЫБЕРИТЕ идентификатор ИЗ подпрограмм, ГДЕ tmp_users.sub_name = подпрограммы.имя,
    dub_id = ВЫБЕРИТЕ идентификатор ИЗ дубляжей, ГДЕ tmp_users.dub_name = dubs.name,
)
 

В формулировке мне нужно вставить в пользователей все строки из tmp_users , чтобы сохранить столбец tmp_users.name , но получить афферентные id всех других таблиц на основе *_name 9 столбец 0020. Как мне подойти к этой задаче?

  • mysql
  • sql
  • база данных
  • sql-insert

1

Кажется, вы ищете INSERT ... SELECT синтаксис:

 INSERT INTO пользователей (имя, sub_id, dub_id)
ВЫБИРАТЬ
    ты.имя,
    с.ид,
    делал
ОТ tmp_users ту
LEFT JOIN subs ON s.name = tu.sub_name
LEFT JOIN dubs d ON d.name = tu.dub_name
 

Это приносит все строки из tmp_users , а затем пытается восстановить соответствующие sub_id и dub_id . Для каждой строки, возвращаемой select , запись вставляется в пользователей . Преимущество этого синтаксиса в том, что вы можете запустить сначала выберите запрос независимо, чтобы увидеть, что будет вставлено.

0

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.