Estoy tratando de eliminar las filas sin usar de una tabla. Esto se ejemplo de mi problema simplificado:¿Cómo borrar las filas no utilizadas de la tabla de base de datos mediante el uso de SQL?
hay 2 tabla:
user table:
user_id user_name
--------------------
1 Mike
3 Carol
8 Eric
address table:
user_id address
-----------------------
1 [email protected]
3 [email protected]
10 [email protected]
3 [email protected]
Quiero eliminar las direcciones no utilizadas de la tabla de direcciones. Si user_id de una dirección existe en la tabla de usuario, entonces la dirección no se usa. Hay una dirección no utilizada en la tabla de ejemplo: [email protected]
Soy nuevo con SQL, y mi solución era fea:
DELETE FROM address
WHERE NOT EXISTS
(SELECT * FROM user WHERE address.user_id = user.user_id);
Tiene que haber una mejor manera de hacerlo. ¿Cuál es la mejor manera de hacerlo?
sqlite se utiliza.
No me parece demasiado feo, ¿qué quiere mejorar? ¿Mirar, el rendimiento? –
Así es como lo habría hecho. Una vez que haya configurado la integridad referencial, no volverá a suceder. Si no puede/no puede tener integridad referencial, entonces "feo" es lo mejor que puede tener. –
@paul: Solo estoy buscando una práctica común, cómo este problema generalmente se resuelve. Además, estaba preocupado por el rendimiento: parece que la búsqueda de la declaración de selección se realiza una vez por cada fila de la tabla de direcciones. – SKi