Il mio obiettivo è quello di creare una query che consente di rimuovere una voce duplicata in una riga utilizzando MySQL 5.7. La mia attuale funzione corrisponde voci con lo stesso peso, tuttavia, è un duplicato. (Si prega di vedere la tabella 2)
Ecco la mia tabella di voce.
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 |
Dopo l'applicazione il mio quesito è:
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 |
Come possiamo vedere il risultato, Lamok 2 and Lamok 4 had a 2 matches
Lamok 3 and Lamok 4 had a 2 matches too
... Non dovrebbe essere possibile... Questo è considerato come il duplicato lotta. Come posso evitare questo tipo di duplicazione nella mia query?
Questo è il mio output di destinazione: (Non duplicare i combattimenti)
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 |