#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. Совершенно верно, но на самом деле у нас нет доступа к структурам, и я просто указывал ему правильное направление — однако следовало бы сделать код немного более защищенным. Вы правы.