как вставить данные в таблицу с помощью оператора select в sql server

#sql-server-2005

#sql-server-2005

Вопрос:

У меня есть две таблицы Login table и userinfo table. Таблица userInfo — это таблица первичного ключа (userId), а таблица входа — таблица внешнего ключа (userId). Итак, моя проблема заключается в том, что когда я вставляю данные в таблицу входа, значение столбца userid должно поступать из таблицы Userinfo, а значение других столбцов таблицы входа, таких как имя пользователя и пароль, должно быть вставлено напрямую. Возможно ли это в одном операторе insert.

я сделал следующее, но это не сработало

 insert into login(Userid,username,password)
values(select max(userid) from userinfo,sumit,sumit123) 
  

Ответ №1:

 insert into login(Userid,username,password)
values((select max(userid) from userinfo),'sumit','sumit123');
  

Ответ №2:

 insert into login (Userid, username, password) 
select max(userid), 'sumit', 'sumit123'
from userinfo
  

[Обратите внимание: хотя это синтаксически правильно, я, вероятно, не стал бы делать это таким образом.]

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

1. Предположительно, OP должен использоваться scope_identity здесь, а не max вообще.

2. я вводил это, когда вы вводили …scope_identity() или, возможно, предложение OUTPUT…

Ответ №3:

Вы пробовали использовать внутреннее СОЕДИНЕНИЕ?

ВСТАВИТЬ В страхование (имя) ВЫБЕРИТЕ сотрудника.Имя пользователя ИЗ проекта ВНУТРЕННЕГО объединения Employee ДЛЯ Employee.EmployeeID = Project.EmployeeID ГДЕ Project.ProjectName = ‘Hardwork’;

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

1. откуда взялась таблица project / insurance / employee? или вы просто опубликовали какой-либо SQL, который был под рукой?

2. Да, я просто взял фрагмент, который у меня был, чтобы показать основную конструкцию оператора. Пользователь не указал все таблицы / поля, о которых идет речь, поэтому просто импровизировал.