Wniosek, który usuwa дублирующуюся nagrywanie z użyciem mysql

0

Pytanie

Mój cel-stworzyć kwerendę, która usuwa дублирующуюся wpis w wierszu za pomocą MySQL 5.7. Moja obecna funkcja odwzorowuje rekordy o tej samej wadze, jednak ma duplikat. (Patrz 2-gą tabela)

Oto moja tabela danych.

entryID| entryName  | weight |
-------------------------------
1      | lamok2     | 1970 |
2      | lamok2     | 1955 |
3      | lamok3     | 1965 |
4      | lamok3     | 1975 |
5      | lamok3     | 1985 |
6      | lamok4     | 1955 |
7      | lamok4     | 1960 |
8      | lamok4     | 1975 |
9      | lamok5     | 1955 |
10     | MA1        | 2000 |
11     | MA2        | 2010 |

Po zastosowaniu mojego wniosku, który:

SELECT t1.entryName  AS mname, t1.weight AS weight,
        MIN(t2.entryName) AS wname,MIN(t2.weight) AS weight
FROM entry t1
LEFT JOIN entry t2 ON t1.weight = t2.weight AND t1.entryName != t2.entryName
GROUP BY t1.entryID, t1.entryName, t1.weight

it produces this:

mname| weight | wname  | weight| 
--------------------------------------------
lamok2 | 1970 | NULL   | NULL   |
lamok2 | 1955 | lamok4 | 1955   |
lamok3 | 1965 | NULL   | NULL   |
lamok3 | 1975 | lamok4 | 1975   |
lamok3 | 1985 | NULL   | NULL   |
lamok4 | 1955 | lamok2 | 1955   |
lamok4 | 1960 | NULL   | NULL   |
lamok4 | 1975 | lamok3 | 1975   |
lamok5 | 1955 | lamok2 | 1955   |
MA1    | 2000 | NULL   | NULL   |
MA2    | 2010 | NULL   | NULL   |

Jak widać po wyniku, Lamok 2 and Lamok 4 had a 2 matches Lamok 3 and Lamok 4 had a 2 matches too... To nie powinno być możliwe... To jest дублирующим walką. Jak mogę uniknąć tego rodzaju powielania w swoim zapytaniu?

To jest mój docelowy wynik: (Żadnych powtarzających się walk)

 mname| weight | wname  | weight| 
    --------------------------------------------
    lamok2 | 1970 | NULL   | NULL   |
    lamok2 | 1955 | lamok4 | 1955   |
    lamok3 | 1965 | NULL   | NULL   |
    lamok3 | 1975 | lamok4 | 1975   |
    lamok3 | 1985 | NULL   | NULL   |
    lamok4 | 1960 | NULL   | NULL   |
    lamok5 | 1955 | lamok2 | 1955   |
    MA1    | 2000 | NULL   | NULL   |
    MA2    | 2010 | NULL   | NULL   |
database mysql
2021-11-24 05:26:19
1

Najlepsza odpowiedź

0

Myślę, że trzeba być zgrupowane według dwóch kolumn, w entryName i weight.

W ten sposób, to zapytanie zwróci swoje duplikaty:

SELECT *
FROM entry
GROUP BY entryName, weight
HAVING COUNT(*) > 1

Gdy znajdziesz element, można je usunąć. Jeśli chcesz je usunąć za pomocą kwerendy, a następnie można użyć coś takiego:

DELETE FROM entry
WHERE entryID IN (
    SELECT e.entryID 
    FROM entry AS e
    GROUP BY e.entryName, e.weight
    HAVING COUNT(*) > 1
)
2021-11-24 09:08:29

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................