gpt4 book ai didi

php - [MySql]如何从一个表复制一行到另一个表并填充额外的列?

转载 作者:搜寻专家 更新时间:2023-10-30 22:24:49 24 4
gpt4 key购买 nike

所以我想压缩这个查询,但我不确定如何去做。

我现在用

$move_to_sold = 
"INSERT INTO sold_inv_item(
`sku`,
`designer`,
`type`,
`price`,
`metal_type`,
`stone_type`,
`stone_weight`,
`item_desc`,
`item_img`
)
SELECT
`sku`,
`designer`,
`type`,
`price`,
`metal_type`,
`stone_type`,
`stone_weight`,
`item_desc`,
`item_img`
FROM inv_item
WHERE `sku` = '$sku'";

$add_date_and_name =
"UPDATE sold_inv_item
SET `purchase_date` = '$date', `customer_name` = '$name'
WHERE `sku` = '$sku'";

我想要做的是将一行从一个表复制到另一个表,然后将其他数据添加到 $_POST 数据的 2 个额外列中。

我试过类似的东西

INSERT INTO sold_inv_item(`sku`,`designer`,`type`,`price`,`metal_type`,
`stone_type`,`stone_weight`,`item_desc`,`item_img`,`purchase_date`,`customer_name`)

VALUES ((select `sku`,`designer`,`type`,`price`,`metal_type`,
`stone_type`,`stone_weight`,`item_desc`,`item_img` FROM inv_item WHERE inv_item.sku = 'pepsi-2-tone'), '2019-02-14','betty Girl');

这给出了列不匹配错误,我怀疑是因为它试图将所有行放入 1 列而不是将它们分散开。

这终于奏效了,但如果可能的话,我宁愿做类似中间解决方案的事情。

INSERT INTO sold_inv_item(`sku`,`designer`,`type`,`price`,`metal_type`,
`stone_type`,`stone_weight`,`item_desc`,`item_img`,`purchase_date`,`customer_name`)

VALUES ((select `sku` from inv_item where inv_item.sku = 'pepsi-2-tone'),
(select `designer` from inv_item where inv_item.sku = 'pepsi-2-tone'),
(select `type` from inv_item where inv_item.sku = 'pepsi-2-tone'),
(select `price` from inv_item where inv_item.sku = 'pepsi-2-tone'),
(select `metal_type` from inv_item where inv_item.sku = 'pepsi-2-tone'),
(select `stone_type` from inv_item where inv_item.sku = 'pepsi-2-tone'),
(select `stone_weight` from inv_item where inv_item.sku = 'pepsi-2-tone'),
(select `item_desc` from inv_item where inv_item.sku = 'pepsi-2-tone'),
(select `item_img` from inv_item where inv_item.sku = 'pepsi-2-tone'),'2019-02-14','betty Girl');

所以最后的问题是,将行从一个表复制到另一个表并填充其他列的最有效代码和性能方式是什么。有一些类似的,但我找不到超过 1-2 列被复制的内容。

最佳答案

您可以使用 INSERT ... SELECT 语法,例如:

INSERT INTO sold_inv_item (
`sku`,
`designer`,
`type`,
`price`,
`metal_type`,
`stone_type`,
`stone_weight`,
`item_desc`,
`item_img`,
`purchase_date`,
`customer_name`
)
SELECT
`sku`,
`designer`,
`type`,
`price`,
`metal_type`,
`stone_type`,
`stone_weight`,
`item_desc`,
`item_img`,
:date,
:name
FROM inv_item
WHERE `sku` = :sku

PS:当谈到在 SQL 查询中使用 POSTed 参数时,SO 上的任何人都会强烈建议 use prepared statements and parameterized queries ,以保护您的代码免受 SQL 注入(inject),并使您的查询更高效、可读和可维护。我修改了查询以使用命名参数。

关于php - [MySql]如何从一个表复制一行到另一个表并填充额外的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54562078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com