在插入sql中

时间:2015-05-02 22:24:13

标签: mysql sql

我有两张桌子:

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小提琴,它显示了正在发生的事情:

http://sqlfiddle.com/#!9/30a71/1

有谁帮忙?

2 个答案:

答案 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)

我认为你想更新(不是INSERT):

UPDATE ORDERS SET
P_Id = 1
WHERE O_Id = 1;

请参阅SQLFiddle