Aiuto su DELETE con HAVING

di il
2 risposte

Aiuto su DELETE con HAVING

Ciao!

dovrei eseguire un'operazione di cancellazione massiva rispetto ad una query che usa HAVING.
ho provato così, ma mi dice questo:

#1242 - Subquery returns more than 1 row 
questa la query:

DELETE FROM st_documenti_testate 
WHERE dt_id = (
    SELECT * FROM (
    	SELECT dt_id
		FROM st_documenti_testate
		LEFT OUTER JOIN st_documenti_righe ON dtr_testata_fk = dt_id
		WHERE dt_chiuso = 0
		GROUP BY dt_id
		HAVING COUNT(dtr_articolo_fk) = 0
    ) tmp
)
come posso correggerla??

2 Risposte

  • Re: Aiuto su DELETE con HAVING

    Metti IN al posto di =.

    Piuttosto, non capisco quella nested query intermedia con table function.
  • Re: Aiuto su DELETE con HAVING

    dvaosta ha scritto:


    Metti IN al posto di =.

    Piuttosto, non capisco quella nested query intermedia con table function.
    ciao!

    perchè senza quella query intermedia mi da questo errore:
    
    #1093 - You can't specify target table 'st_documenti_testate' for update in FROM clause 
    
    invece così, seguendo il tuo suggerimento, ha funzionato:
    
    DELETE FROM st_documenti_testate
    WHERE dt_id IN (
        SELECT * FROM (
           SELECT dt_id
          FROM st_documenti_testate
          LEFT OUTER JOIN st_documenti_righe ON dtr_testata_fk = dt_id
          WHERE dt_chiuso = 0
          GROUP BY dt_id
          HAVING COUNT(dtr_articolo_fk) = 0
        ) tmp
    )
    
    grazie!!
Devi accedere o registrarti per scrivere nel forum
2 risposte