MySql加入查询问题

时间:2011-08-03 15:30:09

标签: mysql

我正在尝试将事务中的所有transaction_subcategory_id更新为匹配中的match_subcategory_id,其中match中的match_name与事务中的transaction_subcategory_name相同。

它必须简单,只是没有走得太远......

这是我们最近的尝试......

UPDATE transaction JOIN match ON match.match_name = transaction.transaction_name
SET transaction.transaction_subcategory_id = match.match_subcategory_id;

match
--------------------------
match_id
match_name
match_subcategory_id

transaction
--------------------------
transaction_id
transaction_name
transaction_subcategory_id

2 个答案:

答案 0 :(得分:2)

UPDATE `transaction` SET `transaction`.`transaction_subcategory_id` = `match`.`match_subcategory_id`
JOIN `match` ON `match`.`match_name` = `transaction`.transaction_name;

只需切换SETJOIN的位置即可。

MySQL Docs on UPDATE statement

文档仅显示隐式连接:

UPDATE `transaction`, `match` SET `transaction`.`transaction_subcategory_id` = `match`.`match_subcategory_id`
WHERE `match`.`match_name` = `transaction`.`transaction_name`;

但是他们说您可以使用JOINSELECT UPDATE上的SET语法,因此在切换JOIN和{{1}}时您的查询应该有效。

答案 1 :(得分:0)

在查询之前尝试使用SET