Eliminando valor usando SQlite mientras haces una UNIÓN INTERNA

Estoy intentando eliminar a todos los votantes de una table de votantes donde no están registrados como demócratas o republicanos Y solo votaron una vez. Tengo una database con tres tablas, miembros del congreso, votantes y votos, y debo unirme a los votos con los votantes para eliminar los datos correctos.

Este código encuentra los datos que quiero eliminar:

SELECT voters.* FROM voters JOIN votes ON voters.id = votes.voter_id WHERE party = 'green' OR party = 'na' OR party = 'independent' GROUP BY votes.voter_id HAVING COUNT(*) = 1; 

Pero no puedo eliminarlo porque recibo un error cada vez que bash eliminarlo con una statement JOIN

Puede express esto como una delete con una cláusula where :

 delete from voters where votes.party not in ('democrat', 'republican') and voters.id in (select id from votes group by id having count(*) = 1); 

Está recibiendo el error porque la combinación consultará su database y creará una tabla temporal que contendrá los datos que acaba de consultar. Los staements de eliminación se utilizan para eliminar datos que están almacenados dentro de su database en su disco y no dentro de su memory.

La syntax de la statement de eliminación es "ELIMINAR DE LA tabla DONDE las condiciones". El valor de la tabla deberá ser una de las tres tablas en su database, y su objective son los votantes. A partir de ahora, tienes la mitad de tu statement de eliminación completa.

La cláusula where necesita evaluar a un valor boolean para cada fila. Hay una function llamada EXISTS (). Esta function se puede usar para borrar esta información. Esencialmente, colocará su statement seleccionada de su publicación dentro de EXISTS (). La function comparará cada una de sus filas en la tabla de eliminación de destino con una fila en su tabla dentro de exists. Si hay una coincidencia, entonces la fila existe, la function se evalúa como verdadera para esa fila, y se elimina.

DELETE FROM voters WHERE (party = 'green' OR party = 'na' OR party = 'independent') AND EXISTS ( SELECT 1 FROM votes WHERE votes.id = voters.id HAVING COUNT(*) = 1 )