Mysql 插入引用其他表的值
我创建了以下简单的数据模型: 我使用以下insert语句插入值: 1表产品: 2表顺序: 到目前为止,所有这些都很有效 但是,现在我还想在表Products\u per\u Order中插入值。 正如您在数据模型中所看到的,Products_per_Order表包含Price列。在本栏中,我想在Products_idProducts栏中插入参考ID的价格。因此,我尝试使用以下insert语句,但到目前为止无法使其工作:Mysql 插入引用其他表的值,mysql,sql,mysql-workbench,Mysql,Sql,Mysql Workbench,我创建了以下简单的数据模型: 我使用以下insert语句插入值: 1表产品: 2表顺序: 到目前为止,所有这些都很有效 但是,现在我还想在表Products\u per\u Order中插入值。 正如您在数据模型中所看到的,Products_per_Order表包含Price列。在本栏中,我想在Products_idProducts栏中插入参考ID的价格。因此,我尝试使用以下insert语句,但到目前为止无法使其工作: INSERT INTO test.products_per_order (O
INSERT INTO test.products_per_order
(Orders_idOrders, Products_idProducts, Price, Quantity)
VALUES
("1","1",(Select Price from test.products),"5"),
("1","2",(Select Price from test.products),"4"),
("2","1",(Select Price from test.products),"10"),
("3","2",(Select Price from test.products),"3"),
("3","3",(Select Price from test.products),"9");
您知道如何解决此问题吗?您可以使用子查询从Products表中提取它
("2","1","Select Price from test.products where test.products.idProducts = '1')","10");
您很接近,但当您从test.products中选择价格时,您会选择test.products表中的所有价格。您需要使其返回一个值
INSERT INTO test.products_per_order
(Orders_idOrders, Products_idProducts, Price, Quantity)
VALUES
("1","1",(Select Price from test.products WHERE test.products.idProducts = '1'),"5"),
("1","2",(Select Price from test.products WHERE test.products.idProducts = '2'),"4"),
("2","1",(Select Price from test.products WHERE test.products.idProducts = '1'),"10"),
("3","2",(Select Price from test.products WHERE test.products.idProducts = '2'),"3"),
("3","3",(Select Price from test.products WHERE test.products.idProducts = '3'),"9");
我建议使用插入。改为选择:
这使得打字错误导致错误价格的可能性大大降低。您的查询毫无意义。每行应该插入哪个价格?嗨,戈登,谢谢你的回答。Workbench在第x行左连接处向我显示查询有问题,运行该语句时,我还得到错误代码:1064。我试着放置,或者;在select语句之后,但无法使其工作。@Michi。MySQL绝对支持这种语法。也许你在最后一排多留了一个工会,非常感谢。现在它正在工作。我只需要更改p.idProduct=x.idProduct上的行;因为p.idProducts=x.idProduct;上缺少s;。嗨,戈登,你有什么想法吗:
("2","1","Select Price from test.products where test.products.idProducts = '1')","10");
INSERT INTO test.products_per_order
(Orders_idOrders, Products_idProducts, Price, Quantity)
VALUES
("1","1",(Select Price from test.products WHERE test.products.idProducts = '1'),"5"),
("1","2",(Select Price from test.products WHERE test.products.idProducts = '2'),"4"),
("2","1",(Select Price from test.products WHERE test.products.idProducts = '1'),"10"),
("3","2",(Select Price from test.products WHERE test.products.idProducts = '2'),"3"),
("3","3",(Select Price from test.products WHERE test.products.idProducts = '3'),"9");
insert into test.products_per_order (Orders_idOrders, Products_idProducts, Price, Quantity)
select x.idOrder, x.idProduct, p.price, x.qty
from (select 1 as idOrder, 2 as idProduct, 5 as qty union all
select 1 as idOrder, 2 as idProduct, 4 as qty union all
. . . -- I've left these out so you can see the structure of the query
select 3 as idOrder, 3 as idProduct, 9 as qty
) x left join
test.products p
on p.idProducts = x.idProduct;