php - 将临时表中的值导入另一个表?
问题描述
我要加入 3 张桌子:
SELECT
catalog_product_entity.entity_id AS product_id,
catalog_product_entity.sku,
customer_entity_varchar.entity_id AS customer_id,
customer_entity_varchar.value,
customer_entity_varchar.attribute_id,
import_tmp.customer,
import_tmp.grp,
import_tmp.qty,
import_tmp.price
FROM catalog_product_entity
INNER JOIN import_tmp
ON catalog_product_entity.sku = import_tmp.sku
INNER JOIN customer_entity_varchar
ON import_tmp.customer = customer_entity_varchar.value OR import_tmp.grp = customer_entity_varchar.value
WHERE customer_entity_varchar.attribute_id = 139 OR customer_entity_varchar.attribute_id = 140
目前,我正在获取数据,构建一个新数组并将其插入到我的最终表格中。
INSERT INTO final_table(`c_id`, `p_id`, `price`) VALUES (customer_id, product_id, price);
但是,我想知道是否可以一口气做到这一点,所以基本上直接从临时表中?
解决方案
是的。使用INSERT . . . SELECT
:
INSERT INTO final_table (c_id, p_i`, price)
SELECT cev.entity_id AS customer_id,
cpe.entity_id AS product_id,
it.price
FROM catalog_product_entity cpe JOIN
import_tmp it
ON cpe.sku = it.sku JOIN
customer_entity_varchar cev
ON cev.value IN (it.customer, it.grp)
WHERE cev.attribute_id IN (139, 140);
请注意,我介绍了表别名。这些使查询更易于编写和阅读。并且IN
比重复OR
条件更容易遵循。
推荐阅读
- python - 从列表中绘制散点图
- javascript - 使用解构的动态命名值
- c# - 分配引用类型属性时的最佳实践
- java - 使用 JPA 的 LocalDate 无法正常工作
- scala - 如何在scala中使用拆分功能
- typescript - nb-select 没有清除 form.reset 上的选择
- python-3.x - __init__.py 导入模块中的 Python 错误
- azure-devtest-labs - 是否可以在 Azure Windows Server DSVM 上创建自定义的基于 Linux 的 Docker 映像
- arrays - 显示数组的特定部分?[SwiftUI]
- performance - 通过 std::vector 的矩阵乘法比 numpy 慢 10 倍