如何从另一个表插入值并插入新值?

时间:2017-03-24 09:28:43

标签: database sql-server-2014

这是我的查询,但它创建了一个新行,唯一的值来自下一个插入查询。我如何组合它们?任何类型的回应将不胜感激。提前谢谢!

INSERT INTO empAttend (empID, empLName, empFName) SELECT empID, empLName, empFName FROM emp WHERE empUser = 'name';
INSERT INTO empAttend (empTimeIn) VALUES (SYSDATETIMEOFFSET());

1 个答案:

答案 0 :(得分:0)

每个INSERT语句都会创建新行。最佳解决方案是在单个语句中指定所有列的所有值:

INSERT INTO empAttend (empID, empLName, empFName, empTimeIn) 
SELECT empID, empLName, empFName, SYSDATETIMEOFFSET()
FROM emp 
WHERE empUser = 'name';

如果由于某种原因无法执行上述操作,则需要UPDATE现有行。为此,您需要获得有关需要更新的行的标识信息,无论是(主)密钥还是列数据的其他组合,以识别行。

或者,在表上创建一个默认约束,在没有提供值时填充列。例如,您可以将empTimeIn的默认值设置为SYSDATETIMEOFFSET(),然后只需省略第二个语句即可应用此默认值。我不知道您的业务需求,但这可能是一个不错的选择。