跨表更新MySQL
伙计们,我有一个MySQL数据库表,我试图用另一个表中的数据填充,但映射到一个公共代码 例如: 运行良好但缓慢(因此有限制条款) 我的问题是,我打算同时填写其他字段,例如:跨表更新MySQL,mysql,sql,Mysql,Sql,伙计们,我有一个MySQL数据库表,我试图用另一个表中的数据填充,但映射到一个公共代码 例如: 运行良好但缓慢(因此有限制条款) 我的问题是,我打算同时填写其他字段,例如: UPDATE signs_labels_products p SET p.ebay_cat_id = (SELECT c.ebay_cat_id FROM signs_labels_ebay_categories_by_signcode c
UPDATE signs_labels_products p
SET p.ebay_cat_id = (SELECT c.ebay_cat_id
FROM signs_labels_ebay_categories_by_signcode c
WHERE p.SignCode = c.sign_code),
p.ebay_category = (SELECT c.ebay_category
FROM signs_labels_ebay_categories_by_signcode c
WHERE p.SignCode = c.sign_code),
p.store_category = (SELECT c.store_category
FROM signs_labels_ebay_categories_by_signcode c
WHERE p.SignCode = c.sign_code)
WHERE p.ebay_cat_id = '' OR p.ebay_cat_id IS NULL LIMIT 5000;
这不是最好的,而且肯定会更整洁,所以我想请你们提供意见和帮助
非常感谢您的任何改进:)
谢谢你的阅读
JB为什么不使用连接而不是子查询
UPDATE signs_labels_products p
join signs_labels_ebay_categories_by_signcode c on c.sign_code = p.SignCode
set
p.ebay_cat_id = c.ebay_cat_id,
p.ebay_category = c.ebay_category,
p.store_category = c.store_category
WHERE p.ebay_cat_id = '' OR p.ebay_cat_id IS NULL
并确保连接键已编入索引,如果未编入索引,请按
alter table signs_labels_products add index SignCode_idx(SignCode);
alter table signs_labels_ebay_categories_by_signcode
add index sign_code_idx(sign_code)
非常感谢,我请客了。必须删除安全查询块(limit子句的另一个原因),但在几秒钟内运行。非常感谢。也很好(删除限制条款),非常感谢:)用于上面,因为它允许创建索引来加快速度:)
UPDATE signs_labels_products p
join signs_labels_ebay_categories_by_signcode c on c.sign_code = p.SignCode
set
p.ebay_cat_id = c.ebay_cat_id,
p.ebay_category = c.ebay_category,
p.store_category = c.store_category
WHERE p.ebay_cat_id = '' OR p.ebay_cat_id IS NULL
alter table signs_labels_products add index SignCode_idx(SignCode);
alter table signs_labels_ebay_categories_by_signcode
add index sign_code_idx(sign_code)