Удалите повторяющиеся записи, основанные на нескольких столбцах и оставьте один в mysql - PullRequest
1 голос
/ 13 апреля 2020

У меня есть код ниже со столбцами UnitRateID, UnitOwnerID, TelecomID, CommType, DATE (Timestamp), Message, который помогает мне определить, является ли что-то дублирующим в течение периода записи. Код работает совершенно потрясающе.

Select UnitRateID, UnitOwnerID,TelecomID, CommType, DATE(Timestamp), Message
From Communication
WHERE DATE(`Timestamp`)>= '2020-04-06'
Having (UnitRateID)>1

Теперь я хочу удалить дублирующиеся записи и остаться с одной. Я попробовал следующее, но оно не работает вообще.

Delete From Communication AS C1 
WHERE EXISTS (Select 1
from Communication As C2
WHERE C1.UnitRateID=C2.UnitRateID
AND C1.UnitOwnerID=C2.UnitOwnerID 
AND C1.TelecomID=C2.TelecomID
AND C1.CommType=C2.CommType
AND C1.Message=C2.Message
AND C1.Timestamp> C2.Timestamp)

1 Ответ

1 голос
/ 13 апреля 2020

В MySQL вы можете использовать JOIN:

Delete c
    From Communication c JOIN
         (select UnitRateID, UnitOwnerID, TelecomID, CommType, Message,
                 min(Timestamp) as min_Timestamp
          from Communication c
          group by UnitRateID, UnitOwnerID, TelecomID, CommType, Message
         ) c2
         on c.UnitRateID = C2.UnitRateID and
            c.UnitOwnerID = C2.UnitOwnerID and
            c.TelecomID = C2.TelecomID and
            c.CommType = C2.CommType and
            c.Message = C2.Message
            c.Timestamp > C2.min_Timestamp;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...