2011-02-09 74 views
2

我有一个更新,我想做出一个表,像SQL更新,似乎需要GROUP BY

UPDATE mytable 
LEFT JOIN worker ON first=worker_first_name && last=worker_last_name 
GROUP BY CONCAT(first, '%%', last) 
SET taint = COUNT(pkey) > 1; 

但当然在更新table_reference不允许分组依据。我怎样才能设置这个列?它只是检查在其他表中是否最多只发生一次/姓氏组合。

+1

MySQL也不允许更新您选择的表格。 – 2011-02-09 21:40:41

+0

@Marc - 除非您在单独的上下文中使用它 – RichardTheKiwi 2011-02-09 21:58:23

回答

3
UPDATE mytable 
INNER JOIN (
    select first, last, COUNT(pkey) > 1 Result 
    FROM mytable 
    LEFT JOIN worker ON first=worker_first_name AND last=worker_last_name 
    GROUP BY first, last) OTHER 
    on OTHER.first = mytable.first 
    and OTHER.last = mytable.last 
SET taint = OTHER.Result; 
2

喜欢的东西:

UPDATE mytable 
SET taint = ((select count(pkey) from worker where worker_first_name = first and worker_last_name = last) > 1) 

,但我想表现可能会留下遗憾的地方。可能会有更高性能的方式。