MySQL - Error al eliminar filas de tabla usando select

 
Vista:
sin imagen de perfil

Error al eliminar filas de tabla usando select

Publicado por jorge luis (6 intervenciones) el 04/12/2016 03:43:02
Que tal

Tengo la siguiente consulta SQL para eliminar las filas de la tabla EQUIPO

1
2
3
4
5
6
DELETE FROM equipo
WHERE hardwareID NOT IN
(SELECT MAX(EQ. hardwareID) FROM EQUIPO EQ
INNER JOIN RED
ON EQ.hardwareID = RED.hardwareID
GROUP BY RED.MAC);

Pero obtengo este error:
Table 'equipo' is specified twice, both as a target for 'DELETE' and as a separate source for data

¿Que error estoy cometiendo?

La tabla EQUIPO tiene los campos hardwareID, nombre, fechaRegistro y la tabla RED los campos redID, hardwareID y MAC.
Necesito eliminar los equipos que repiten la MAC y solo debo dejar los equipos con la fecha mas reciente..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Error al eliminar filas de tabla usando select

Publicado por Martha (80 intervenciones) el 04/12/2016 14:30:08
Dos cosas.
Una, haz caso al mensaje de error. Esté en inglés pero tiene significado.
Dos, la consulta NOT IN te debe dar un listado de hardware,ID ¿Te lo da?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error al eliminar filas de tabla usando select

Publicado por jorge luis (6 intervenciones) el 04/12/2016 15:50:39
Si, la consulta del select me da un listado, ya lo he probado, pero ahora quiero eliminar todas las filas de la tabla equipo que no esten en ese resultado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 98
Bronce
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Error al eliminar filas de tabla usando select

Publicado por kip (30 intervenciones) el 05/12/2016 15:11:06
Hola, intentalo asi:

1
2
3
4
5
6
7
8
9
DELETE FROM equipo
WHERE hardwareID NOT IN	(
			SELECT * FROM (
					SELECT MAX(EQ.hardwareID) FROM EQUIPO EQ
					INNER JOIN RED
					ON EQ.hardwareID = RED.hardwareID
					GROUP BY RED.MAC
				      ) AS Tbl
		         );
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Error al eliminar filas de tabla usando select

Publicado por jorge luis (6 intervenciones) el 06/12/2016 01:52:56
Gracias, esta es la solución al problema.

Aunque ahora tengo problema, deseo excluir de esa eliminación a los equipos con MAC 00-00-00-00-00.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar