我在 MySQL 中有一个表 (Project_Supplier_Status),如下所示:
项目 | 供应商 | 状态 | Track_Id |
---|---|---|---|
Pro1 | 支持1 | P | 1 |
Pro1 | 支持1 | P | 2 |
Pro1 | 支持1 | P | 3 |
Pro1 | 支持1 | P | 4 |
Pro5 | 支持5 | P | 5 |
Pro5 | 支持5 | P | 6 |
Pro5 | Sup6 | P | 7 |
问题陈述:
我需要Mysql查询来对100 000条记录执行上述2个操作。
更新
所需输出:
项目 | 供应商 | 状态 | Track_Id |
---|---|---|---|
Pro1 | 支持1 | P | 1 |
Pro1 | 支持1 | F | 2 |
Pro1 | 支持1 | F | 3 |
Pro1 | 支持1 | F | 4 |
Pro5 | 支持5 | F | 5 |
Pro5 | 支持5 | F | 6 |
Pro5 | Sup6 | F | 7 |
常见的多表UPDATE。
UPDATE Project_Supplier_Status t1
JOIN Project_Supplier_Status t2 USING (Project)
SET t1.Status = 'F' -- update status
WHERE (t1.supplier <> t2.supplier) -- if exists another supplier
OR (t1.supplier = t2.supplier AND t1.Track_Id > t2.Track_Id) -- or lower id
;