2013-11-01 143 views
0

我有一个表称为颜色。在这个表格中有两个字段:color和is_duplicate。如果在颜色列中找到多个相同的值,我想在is_duplicate字段中放置1。更新字段,如果其他字段在同一表中有重复

这是我到目前为止所尝试的,但它回来的错误,因为我是新的MySQL语法。

update colors 
set is_duplicate = 1 
where color 
HAVING COUNT(*) > 1 

我这样做,所以我就可以删除所有副本的副本,并在以后的时间回去看看它记录一段时间内的重复。

有什么建议吗?谢谢。

回答

0

试试这个:

update colors tab1 join (select color, count(*) as num_color 
     from colors group by color 
     having count(*) > 1 
     ) tab2 on tab1.color = tab2.color  
set is_duplicate = 1 
+0

在你的榜样,是TAB1和TAB2指两个不同的表?我不确定我是否遵守。我试图做到这两个列在同一个表中。这会继续吗? –

+0

对不起,tab1是颜色,而tab2只是查询结果的别名 –

+0

当我尝试运行时,phpmyadmin会抛出此错误:#1093 - 您无法在FROM子句中指定目标表'颜色'作为更新 –

相关问题