#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. Да, я просто взял фрагмент, который у меня был, чтобы показать основную конструкцию оператора. Пользователь не указал все таблицы / поля, о которых идет речь, поэтому просто импровизировал.