这是我的查询,但它创建了一个新行,唯一的值来自下一个插入查询。我如何组合它们?任何类型的回应将不胜感激。提前谢谢!
INSERT INTO empAttend (empID, empLName, empFName) SELECT empID, empLName, empFName FROM emp WHERE empUser = 'name';
INSERT INTO empAttend (empTimeIn) VALUES (SYSDATETIMEOFFSET());
答案 0 :(得分:0)
每个INSERT
语句都会创建新行。最佳解决方案是在单个语句中指定所有列的所有值:
INSERT INTO empAttend (empID, empLName, empFName, empTimeIn)
SELECT empID, empLName, empFName, SYSDATETIMEOFFSET()
FROM emp
WHERE empUser = 'name';
如果由于某种原因无法执行上述操作,则需要UPDATE
现有行。为此,您需要获得有关需要更新的行的标识信息,无论是(主)密钥还是列数据的其他组合,以识别行。
或者,在表上创建一个默认约束,在没有提供值时填充列。例如,您可以将empTimeIn
的默认值设置为SYSDATETIMEOFFSET()
,然后只需省略第二个语句即可应用此默认值。我不知道您的业务需求,但这可能是一个不错的选择。