MySQL:如何在表中找到重复记录,并更新另一个表?

时间:2012-10-11 08:47:47

标签: mysql

我有两张包含以下结构的表格

tbl_inv

SKU   VID  UPC
AAA    2   0123
AA2    3   0123
AA3    4   0123
BBB    2   1234

此表包含所有产品,包括sku,vid和UPC编号。

tbl_images

SKU   VID  IMAGE_HASHNAME
AAA    2   fcd20a60fd5c1b64cee40ac0c019a022

此表包含带图像的产品。 我想在没有图像和UPC代码匹配的情况下在此产品上进行更新和插入图像。

与sku AAA,AA2和AA3匹配的产品,因为UPC编号是重复的。

必须获得的最终结果是:

AA2为IMAGE_HASHNAME分配了AAA值 AA3为IMAGE_HASHNAME

分配AAA值

此新的重新排序必须插入tbl_images

更新后

tbl_images

SKU   VID  IMAGE_HASHNAME
AAA    2   fcd20a60fd5c1b64cee40ac0c019a022
AA2    3   fcd20a60fd5c1b64cee40ac0c019a022
AA3    4   fcd20a60fd5c1b64cee40ac0c019a022




SELECT i.UPC as upc
        FROM tbl_inv i 
        LEFT JOIN tbl_images img ON img.sku = i.sku AND img.vid = i.vid
        WHERE i.UPC != '' 
        AND img.image_hashname IS NOT NULL
        GROUP BY i.upc
        having count(i.upc) > 1

通过此查询,我尝试在表中查找匹配的记录,但不显示记录。 在此查询之后,我想用PHP复制文件,并在表tbl_images中插入VALUES。 哪里错了?

我为我的英语道歉。

2 个答案:

答案 0 :(得分:1)

找到匹配

SELECT upc FROM tbl_inv
WHERE sku in ( SELECT sku FROM tbl_images)  

此查询将返回0123,即SKU AAA的upc

- 作为sku做出的假设是独一无二的

答案 1 :(得分:1)

试试这个

select t3.SKU,t3.VID,t4.IMAGE_HASHNAME 
from tbl_inv as t3 left join 
   (selectt1.SKU,t1.VID,t1.UPC,t2.IMAGE_HASHNAME 
          from tbl_inv as t1 right join tbl_images ON t1.SKU=t2.SKU)
             as t4 on t3.UPC=t4.UPC