Mi objetivo es crear una consulta que elimina una entrada duplicada en una fila usando MySQL 5.7. Mi función actual coincide con las entradas con el mismo peso, sin embargo, se ha duplicado. (Por favor, consulte la tabla 2)
Aquí está mi mesa de entrada.
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 |
Después de aplicar mi consulta es que:
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 |
Como podemos ver en el resultado, Lamok 2 and Lamok 4 had a 2 matches
Lamok 3 and Lamok 4 had a 2 matches too
... No debería ser posible... Esto es considerado como el duplicado de la lucha. ¿Cómo puedo evitar este tipo de duplicación en mi consulta?
Este es mi destino de salida: (Sin duplicar peleas)
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 |