¿Eliminación de SQL de la condición de coincidencia de consulta en dos tablas?

Todas las filas se eliminan con esta consulta, mientras que solo quiero eliminar aquellas filas donde measureid coincidir en las dos tablas de la siguiente manera:

delete from temp1 
where exists (select t1.* 
              from temp1 t1, temp2 t2 
              where t2.measureid = t1.measureid)

¿Qué tengo que cambiar?

preguntado el 10 de septiembre de 12 a las 22:09

2 Respuestas

no creo que quieras estar usando exists creo que quieres usar in

delete from temp1 where measureid in 
    (select t1.measureid from temp1 t1, temp2 t2 where t2.measureid = t1.measureid);

o mejor aún

delete from temp1 where measureid in 
    (select measureid from temp2);

Respondido el 10 de Septiembre de 12 a las 22:09

Eso es porque

select t1.* from temp1 t1, temp2 t2 where t2.measureid = t1.measureid

siempre devuelve filas. Lo que probablemente querías era

delete from temp1 t1 where exists (select t2.* from temp2 t2 where t2.measureid = t1.measureid)

Respondido el 10 de Septiembre de 12 a las 22:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.