sql insert запрос с вводом подзапроса и дополнительным параметром

#sql

#sql

Вопрос:

вставить в sycle значения (имя, пароль) (выберите name из name_table,’name’);

у меня возникла проблема при вставке дополнительного значения с параметром, полученным из подзапроса select.

это может быть выполнено в двух запросах, но я хочу знать, можно ли это выполнить в одном запросе.

Комментарии:

1. Откуда берется ‘password’?

Ответ №1:

 insert into sycle(name,password)
select name, password from name_table
  

или, если пароль является переменной:

 insert into sycle(name,password)
select name, @password from name_table
  

если паролем является ‘name’, то:

 insert into sycle(name,password)
select name, 'name' from name_table
  

Комментарии:

1. нет, я хочу жестко закодировать значение ‘name’ в качестве пароля …. оно не берется из таблицы….

Ответ №2:

Попробуйте:

   INSERT INTO sycle(name,password) VALUES (SELECT name, 'name' FROM name_table);
  

хотя это займет только одно имя из name_table. Если вы хотите получить целую кучу значений, выполните:

   INSERT INTO sycle(name,password) SELECT name, 'name' FROM name_table;
  

Комментарии:

1. какая у вас СУБД? Вы используете mysql или sql server?

Ответ №3:

Это то, что вы ищете:

 INSERT INTO sycle
(
   name
   ,password
)
SELECT  name
        ,NULL -- password
FROM    name_table
  

Комментарии:

1. он не работает после использования — весь оставшийся запрос прокомментирован

2. Да, двойное тире — это комментарий. Убедитесь, что после слова password есть новая строка, или просто удалите -- password полностью.

Ответ №4:

попробуйте это

вставить в sycle выберите name,’name’ из name_table

Комментарии:

1. Это не сработает, если в scycle более двух столбцов или если столбцы расположены не в нужном порядке.

2. Совершенно верно, но на самом деле у нас нет доступа к структурам, и я просто указывал ему правильное направление — однако следовало бы сделать код немного более защищенным. Вы правы.