用另一个表中的信息更新wordpress users_ meta表

xqk2d5yq  于 2023-05-22  发布在  WordPress
关注(0)|答案(1)|浏览(159)

我们有一个自定义表“CRM”,每天从我们的ERP系统更新。
crm表具有字段customerid、customertype
我需要从crm将 meta_key 'user_type'更新为customertype。
我需要想出最快最少资源的方法来完成这件事。我不是最好的SQL,所以我的方式是最糟糕的。
1.从crm中选择所有行。
1.遍历所有行并找到user_id(来自WordPress),其中 meta_key = crm.'custid'

  1. Update user_ metaSET meta_value = crm.customertype WHERE user_id = user_id
    这将产生数千个查询,当然也是一个资源消耗。任何帮助都将不胜感激。
mwngjboj

mwngjboj1#

您可以尝试在分区和CTE中执行此操作,也可以考虑只从crm中选择所需的列,即:你真的需要从CRM表的所有列?还可以考虑使用显式SQL Server事务,这样您就可以查看使用更新(https://www.sqlshack.com/how-to-rollback-using-explicit-sql-server-transactions/)时是否会出现任何错误:

BEGIN TRAN

WITH cte_crm AS (
SELECT DISTINCT customerid, customertype
FROM table_crm 
WHERE 'date_column' = '2023-05-16' /*you can specify the date for today here if you are updating daily values - else you can specify a period when looking up historical values*/
)
UPDATE user_meta
set user_meta.meta_value =crm.customertype
from table_user_meta user_meta
inner join cte_crm crm
on user_meta.customerid= c.customerid

ROLLBACK TRAN /* get rid of ROLLBACK TRAN once you're happy with the results and replace it with COMMIT TRAN to implement the update*/

相关问题