Вставка нескольких данных в таблицу с помощью операторов SELECT и JOIN - PullRequest
0 голосов
/ 05 июня 2018

Я хотел бы вставить данные в таблицу с одним из столбцов, заполненных запросом выбора.Это мой SQL-оператор:

INSERT INTO books ( gid, type, membernumber,  changedate, user)
  VALUES( '2b4493e8-cae8-4624-8177-fcc96553c5be',
          2,
          (SELECT member FROM mem m JOIN group g ON m.uid = g.sgroup),
          TIMESTAMP '2017-01-03 00:00:00.000',
          'mark'
        );

Что я хочу добиться, так это то, что для каждой вставки membernumber будет взято из базы mem таблицы на JOIN, которую он имеет с group Таблица.

Когда я выполняю этот оператор, я получаю ошибку:

Более одной строки, возвращенной подзапросом, используемым в качестве выражения

Так, например,если при объединении будет получено 20 строк, то будет вставлено 20 записей с каждым значением member, заменяющим membernumber в вставке для 20 строк.

Обновление

У меня также есть другой запросгде два столбца должны быть заменены инструкциями SELECT-JOIN.@ Тим дал мне пример одного столбца.Я хочу, чтобы пример с двумя столбцами был заполнен двумя инструкциями SELECT-JOIN.

1 Ответ

0 голосов
/ 05 июня 2018

Вы можете перефразировать это как INSERT INTO ... SELECT:

INSERT INTO books (gid, type, membernumber, changedate, user)
SELECT
    '2b4493e8-cae8-4624-8177-fcc96553c5be',
    2,
    member,
    '2017-01-03 00:00:00.000',
    'mark'
FROM mem m
INNER JOIN `group` g
    ON m.uid = g.sgroup;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...