我如何去以更新匹配的情况下相同的表匹配两个表中的三个字段
题
给定两个表A和B中MySQL数据库,一个如何在表A中的一行更新字段当且仅当在表中的前面提到行中的某些字段甲恰好在表中的一个不同的行匹配字段B.表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
要符合使用参考,金额和日期。
解决方案
莫非作为添加排除WHERE子句,以避免回用作为简单?
AND Table A.Status <> 'MATCHED'
AND Table B.Status <> 'USED'
如果各行依次更新,但如果它是基于集和事务性这将工作。我不测试这个道歉;我没有的MySQL这里来试试这个。
其他提示
添加更多的条件,你的WHERE子句来强制执行1:记录之间的1场在表A和tableB的
不隶属于 StackOverflow