根据同一个表中其他行的值更新行

时间:2013-09-19 11:51:45

标签: mysql

files_imported
--------
ID (PK)
SPN
FILE_ID
LISTPRICE
ACTION

我需要搜索并更新TableA和SET ACTION ='A'WHERE给定SPN的行中的PRICE值不等于为不同的FILE_ID和匹配的SPN找到的PRICE值。

我可以通过将任务分解为较小的查询来完成PHP,但我宁愿使用MySQL的干净解决方案。

这是我走了多远:

UPDATE files_imported fi1
JOIN files_imported fi2
    ON fi1.SPN = fi2.SPN
SET ACTION = 'M' 
WHERE fi1.file_id = 980987987
AND fi1.listprice <> fi2.listprice

1 个答案:

答案 0 :(得分:0)

UPDATE files_imported fi1, files_imported fi2
SET f11.ACTION = 'M' 
WHERE fi1.file_id = 980987987
AND fi1.SPN = fi2.SPN /* same SPN*/
AND fi1.listprice <> fi2.listprice /* different price */
AND fi1.file_id <> fi2.file_id /* different file */