搜索

首页  >  问答  >  正文

更新相同from_address的每一行的contact_id列为最大值

我有一个数据库,其中有一个名为contacts的表,其中包含客户列表,还有一个名为helpdesk_tickets的表,其中每一行表示一个来自客户的帮助台工单。

软件发生错误,并在contacts表中创建了重复项(除了id之外的所有数据都相同)。实际上,在helpdesk_tickets表中,一些电子邮件被分配给不同的客户id。我希望将所有具有相同电子邮件地址的工单分配给最新的client_id。这给我每个工单的最新client_id(基于helpdesk_tickets中的from_email列):

SELECT from_address, MAX(contact_id) as a FROM helpdesk_tickets GROUP BY from_address HAVING COUNT(contact_id)>1;

现在,我需要将具有相同from_address的每一行更新为上面选择的最大值。如何实现?

P粉835428659P粉835428659437 天前619

全部回复(1)我来回复

  • P粉994092873

    P粉9940928732023-09-17 13:25:39

    你可以在这里使用更新连接:

    UPDATE helpdesk_tickets ht1
    INNER JOIN
    (
        SELECT from_address, MAX(contact_id) AS max_contact_id
        FROM helpdesk_tickets
        GROUP BY from_address
    ) ht2
        ON ht2.from_address = ht1.from_address
    SET
        contact_id = ht2.max_contact_id
    WHERE
        contact_id <> ht2.max_contact_id;
    

    回复
    0
  • 取消回复