2017-01-16 57 views
0

我有這樣的SQL代碼:SQL更新

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

它返回只有一次出現在數據庫中的所有行,也只返回沒有設置電子郵件的人。現在我需要對所有這個select語句應用UPDATE函數。我怎麼能這樣做?我需要爲所有這些行將clients_branches.invoice_send設置爲0。

我似乎無法用在UPDATE語句HAVING COUNT這樣的:

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

無需COUNT我會改變這一切在這個表中重複至少一次行。而我只需要改變以計數的人= 1

+0

問題更新 – The50

回答

1

你可以使用一個加入了允許更新使用表和查詢的

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

謝謝它的工作結果:) – The50