搜尋

首頁  >  問答  >  主體

更新相同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粉835428659467 天前647

全部回覆(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
  • 取消回覆