【问题标题】:SQL Update for Selected rows选定行的 SQL 更新
【发布时间】:2017-01-16 15:35:28
【问题描述】:

我有这个 SQL 代码:

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

它返回在数据库中只出现一次的所有行,也只返回没有设置电子邮件的行。现在我需要将 UPDATE 函数应用于所有这些 select 语句。我怎么能做到?我需要将所有这些行的 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 

如果没有 HAVING COUNT,我将更改此表中至少重复一次的所有行。我只需要更改 count = 1 的那些。

【问题讨论】:

    标签: mysql select sql-update


    【解决方案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
      ;
    

    【讨论】:

      猜你喜欢
      • 2013-03-12
      • 2016-03-02
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多