我有两张桌子:
Persons (PersonID, LastName, FirstName)
Orders (O_Id, OrderNo, P_Id)
Orders.P_Id
应具有Persons.PersonID
的值。
我正在尝试在Orders上插入以将P_Id插入到订单中,但我希望它匹配我的Persons表中的值以及我的Orders表,以便我可以将它们链接起来并允许P_id链接到顺序。
我试过以下这个?不确定最好的方法是什么?
INSERT INTO Orders (P_Id)
SELECT PersonID FROM Persons
WHERE PersonID='1'
UNION ALL
SELECT O_Id FROM Orders
WHERE O_Id ='1';
编辑:
我已经尝试了UNION ALL,但它并没有将它们添加到同一行上这里是我的sql小提琴,它显示了正在发生的事情:
答案 0 :(得分:0)
我认为您实际尝试实现的目标不是INSERT
,而是UPDATE
:
试试这个:
UPDATE Orders
SET P_ID = (SELECT PersonID From Persons WHERE PersonID = 1)
WHERE O_ID = 1
你不能{" INSERT
"带有INSERT
命令的现有行中的值。因此,UPDATE
命令存在。
INSERT
仅在表格中创建行时才有用。对于所有其他方案,当您尝试将包含数据的列填充到现有行中时,应使用UPDATE
。
上述查询基本上是对您所拥有的内容的重写,但由于您已经知道要用其填充P_ID列的PersonID的值,因此您可以将查询简化为:
UPDATE Orders
SET P_Id = 1
WHERE O_Id = 1
答案 1 :(得分:0)