update register ejemplo developer delete delect con sql oracle sql-delete

sql - register - delete table oracle ejemplo



Eliminar con "Unirse" en Oracle SQL Query (2)

No estoy muy familiarizado con Oracle Sql Queries, por lo tanto, tengo un problema al eliminar algunas filas de una tabla que debe cumplir una restricción que incluye campos de otra tabla (unión). En otras palabras, quiero escribir una consulta para eliminar filas que incluyen UNIR.

En mi caso, tengo una tabla ProductFilters y otra tabla Products unidos en los campos ProductFilters.productID = Products.ID . Quiero eliminar las filas de ProductFilters tengan una ID superior o igual a 200 y el producto al que se refieren tiene el nombre ''Marcar'' (el nombre es un campo en Producto).

Me gustaría que me informen inicialmente si la combinación es aceptable en una consulta de eliminación en Oracle. Si no, ¿cómo debo modificar esta consulta para que funcione, ya que en ese formulario recibo un error:

DELETE From PRODUCTFILTERS pf where pf.id>=200 And pf.rowid in ( Select rowid from PRODUCTFILTERS inner join PRODUCTS on PRODUCTFILTERS.PRODUCTID = PRODUCTS.ID And PRODUCTS.NAME= ''Mark'' );


Recientemente me enteré de la siguiente sintaxis:

DELETE (SELECT * FROM productfilters pf INNER JOIN product pr ON pf.productid = pr.id WHERE pf.id >= 200 AND pr.NAME = ''MARK'')

Creo que parece mucho más limpio que otros códigos propuestos.


Según la respuesta a la que he vinculado en mi comentario anterior, esto debería funcionar:

delete from ( select pf.* From PRODUCTFILTERS pf where pf.id>=200 And pf.rowid in ( Select rowid from PRODUCTFILTERS inner join PRODUCTS on PRODUCTFILTERS.PRODUCTID = PRODUCTS.ID And PRODUCTS.NAME= ''Mark'' ) );

o

delete from PRODUCTFILTERS where rowid in ( select pf.rowid From PRODUCTFILTERS pf where pf.id>=200 And pf.rowid in ( Select PRODUCTFILTERS.rowid from PRODUCTFILTERS inner join PRODUCTS on PRODUCTFILTERS.PRODUCTID = PRODUCTS.ID And PRODUCTS.NAME= ''Mark'' ) );