如何使用分组依据选项更新此列

how can I update this column with an group by option

我有一个table这样的

 title                     ACCNR      ID
 Hello1                    1          1
 Hello1                    1          2
 Hello1                               3
 Hello1                               4
 Hello2                    3          5
 Hello2                    3          6
 Hello2                               7
 Hello2                               8

现在我想为相同的标题填充缺失的 ACCNR。

编辑:结果应为:

 title                     ACCNR      ID
 Hello1                    1          1
 Hello1                    1          2
 Hello1                    **1**          3
 Hello1                    **1**          4
 Hello2                    3          5
 Hello2                    3          6
 Hello2                    **3**          7
 Hello2                    **3**          8

我试过这个:

update refs join refs as p set refs.accnr = 
IF  (   
    SELECT  GROUP_CONCAT(DISTINCT refs.accnr order by accnr)) 
    from refs 
    where refs.id = p.id and  refs.accnr <> '' GROUP BY refs.title 
IS NULL ' ',c1) where p.id=refs.id;

原因是,我得到了这个错误

[Err] 1048 - Column 'custom_1' cannot be null

第一次尝试:

   update refs join refs as p set refs.custom_1 = 
    (   
    SELECT  GROUP_CONCAT(DISTINCT refs.accnr order by accnr) 
    from refs       
    where refs.id = p.id and  refs.accnr <> '' GROUP BY refs.title 
    ) where p.id=refs.id;

是什么让我错了? 如果有任何建议,我将不胜感激。

编辑:此方法使用第二个 table:

      drop table if EXISTS accnr;
      create table accnr (SELECT  GROUP_CONCAT(DISTINCT refs.accnr order 
      by accnr) as accnr, concat(',',GROUP_CONCAT(refs.id order by 
      refs.id),',') as idlist from refs         
      where refs.accnr <> '' GROUP BY refs.titel,);

      update refs join accnr set custom_1 = accnr.accnr where refs.id like concat('%,',refs.id,',%');

您可以通过在 UPDATE 语句中利用 sql 别名以高效的方式做到这一点:

UPDATE 
    tab 
SET 
    tab.ACCNR = (
        SELECT 
            t.ACCNR 
        FROM 
            tab t 
        WHERE 
            t.title = tab.title
        LIMIT 1
    )
WHERE 
    tab.ACCNR IS NULL

如果我理解正确的话,你只需要用与第一行相同的值更新列 accnr

你可以这样更新你table:

Update your_table b Join 
(Select title, accnr from your_table where accnr is not null group by title) a 
on b.title = a.title set b.accnr =a.accnr;