Actualización de un campo de registro si se encuentra que es un duplicado
Frecuentes
Visto 49 veces
0
Tengo la siguiente selección de Mysql que devuelve todas las direcciones de correo electrónico duplicadas en mi tabla.
SELECT users.FirstName, `Surname`, users.email1
FROM users
INNER JOIN (
SELECT email1
FROM users
GROUP BY email1
HAVING count(email1) > 1) dup ON users.email1 = dup.email1
ORDER BY users.email1
Esto funciona muy bien, lo que deseo hacer ahora es actualizar un campo llamado users.DupEmail con "SÍ", pero no estoy seguro de cómo hacerlo. He intentado poner una línea de actualización para reemplazar la selección, pero claramente me estoy equivocando porque estoy de vuelta aquí pidiendo ayuda.
¿Alguien puede ayudar por favor?
2 Respuestas
2
Puedes usar la tabla múltiple UPDATE
sintaxis con una autounión:
UPDATE users AS u1
JOIN users AS u2 USING (email1)
SET u1.DupEmail = 'YES'
WHERE NOT u1.id = u2.id; -- use your primary key here
contestado el 03 de mayo de 12 a las 15:05
0
El siguiente script debe resolver su problema: esté seguro y use SELECT para probar los resultados antes de aplicar la actualización:
-- SELECT FirstName, Surname, email1
-- FROM users
UPDATE users
SET DupEmail = 1
WHERE u0.email1 IN (
SELECT u1.email1
FROM users u1
GROUP BY u1.email1
HAVING COUNT(*) > 1
)
contestado el 03 de mayo de 12 a las 15:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas mysql duplicates or haz tu propia pregunta.
Gracias eggyal una respuesta rápida - probado y funcionando, impresionante - user965526