Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
跨表更新MySQL_Mysql_Sql - Fatal编程技术网

跨表更新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

伙计们,我有一个MySQL数据库表,我试图用另一个表中的数据填充,但映射到一个公共代码

例如:

运行良好但缓慢(因此有限制条款)

我的问题是,我打算同时填写其他字段,例如:

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)