我对此感到困惑。我有两个表:
分销商
类别 cat_match_id
钱包
鞋子
类别
id 猫名
1个钱包
2鞋子
我要做的是在 Distributor (数千行)的每一行中搜索 category 列,并将其与 cat_name < / em>并在 Categories 中获取关联的ID(112行),然后将该ID放入 cat_match_id 中。我搜索了所有可以找到的帖子,并尝试了每种解决方案,甚至包括解决方案的组合。
我尝试过:
UPDATE Distributor
INNER JOIN Categories
ON Distributor.category = Categories.cat_name
SET Distributor.category = Categories.id
并且(尝试连接左,右,内部,外部等)
UPDATE Distributor d
LEFT JOIN Categories c
ON d.category = c.cat_name
SET d.cat_match_id = c.id
WHERE d.category = c.cat_name
也使用MySQL中的示例:
UPDATE Distributor,Categories
SET Distributor.cat_match_id = Categories.id
WHERE Distributor.category = Categories.cat_name
这些只是我尝试过的十几个或更多片段中的几个。是因为我要匹配2个varchar并复制到结果int上吗?
答案 0 :(得分:0)
您的初始查询几乎是正确的,除非您更新了错误的列,否则数据存在一些问题。您应该这样做:
UPDATE Distributor d
INNER JOIN Categories c
ON d.category = c.cat_name
SET d.cat_match_id = c.id;
您当前的尝试是更新Category.category
字段,该字段已经填充,并且是您在联接条件下使用的字段。
请注意,我在更新查询中引入了别名,这使它更易于阅读和简洁。