2017-01-16 3 views
0

Ich habe diesen SQL-Code:SQL-Update für ausgewählte Zeilen

SELECT * FROM `clients_branches` 
     WHERE NULLIF(clients_branches.invoice_email, '') IS NULL 
     GROUP BY client_code 
     HAVING COUNT(*) = 1 

Es gibt alle Zeilen zurück, die nur einmal in der Datenbank angezeigt wird, auch gibt es nur diejenigen ohne E-Mail-Set. Jetzt muss ich die UPDATE-Funktion auf diese select-Anweisung anwenden. Wie könnte ich es tun? Ich muss clients_branches.invoice_send für alle diese Zeilen auf 0 setzen.

Ich kann nicht HAVING COUNT auf Anweisung UPDATE zu verwenden, wie dies scheint:

UPDATE `clients_branches` 
SET clients_branches.invoice_send = 0 
WHERE NULLIF(clients_branches.invoice_email, '') IS NULL 
HAVING COUNT(*) = 1 

Ohne COUNT MIT Ich werde alle Zeilen ändern, die in dieser Tabelle mindestens einmal wiederholt. Und ich brauche nur die, die mit Graf ändern = 1.

+0

Frage aktualisiert – The50

Antwort

1

Sie könnten eine Verwendung kommen, um die Verwendung der für die Aktualisierungstabelle zu lassen und das Ergebnis der Anfrage

update `clients_branches` 
    JOIN 
    ( 
    select client_code, count(*) 
    FROM `clients_branches` 
    WHERE NULLIF(clients_branches.invoice_email, '') IS NULL 
    group by client_code 
    HAVING COUNT(*) = 1 
) t on t.client_code = `clients_branches`.client_code 
    set clients_branches.invoice_send = 0 
    ; 
+0

Danke es funktioniert :) – The50

Verwandte Themen