给定 MySQL 数据库中的两个表 A 和 B,当且仅当表 A 中上述行中的某些字段与表 B 中不同行中的字段完全匹配时,如何更新表 A 行中的字段。表 B 中的行必须使用一次,并且每次比较只能使用一次。因此,表 B 中具有与表 A 中的行匹配的字段的行不能用于匹配表 A 中的任何其他行。
我试过了
UPDATE
Table A,
Table B
SET
Table A.Status = 'MATCHED',
Table B.Status = 'USED'
WHERE
Table B.Status IS NULL
AND
Table A.Field1 = Table B.Field1
AND
Table A.Field2 = Table B.Field2
不幸的是,这并没有给出我想要的结果,因为表 A 中的不同行往往会与表 B 中的同一行匹配。
例如:表 A
ID Date Ref Amount Status
1 2009-10-20 773 300000
2 2009-10-20 773 10000 MATCHED
3 2009-10-20 773 150000
4 2009-10-20 773 20000 MATCHED
5 2009-10-20 773 140000 MATCHED
表 B
Ref Amount Date ID
870 50000 2009-11-01 1
871 50000 2009-11-01 2
871 80000 2009-11-01 3
871 20000 2009-11-01 4
871 20000 2009-11-01 5
871 20000 2009-11-01 6
872 300000 2009-11-01 7
使用 Ref、Amount 和 Date 进行匹配。