proudmore
@proudmore

Как провести insert, если одно из вставляемых значений нужно найти с помощью SELECT?

Здравствуйте.
Есть 2 таблицы:
requests - id, file_id, остальное не важно.
files - id, name
У меня на входе есть name таблицы file. Как построить запрос на инсерт так, чтобы в итоге я получил вторым параметром id файла, а не его название?
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
insert into requests (file_id /*other*/) values((select id from tablename where name = ?) /*, other*/);

NULL если строки не будет в подзапросе, ошибка - если их будет больше 1.

insert into requests (file_id /*other*/) 
select id, /* other const values*/ from tablename where name = ?;

Если select даст 0 строк - ничего вставлено не будет.
Одна или больше - столько новых строк и будет вставлено.
Ответ написан
Комментировать
@MoonMaster
Программист и этим все сказано
Может быть в данном случае воспользоваться конструкцией INSERT INTO SELECT
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы