好的,所以我有一个包含3000行的表。每行都是唯一的,但是某些字段是重复的。 我想用重复的字段更新行。我很难把这个说出来,所以如果我弄错了一切,我感到抱歉。
For example, the table looks like this:
+----+--------+--------+-----------+-------+-------+------+--+
| id | name | place | day | time1 | time2 | dupe | |
+----+--------+--------+-----------+-------+-------+------+--+
| 1 | George | Garden | Sunday | 12:00 | 13:00 | 0 | |
| 2 | George | House | Monday | 15:00 | 18:00 | 0 | |
| 3 | David | School | Wednesday | 15:00 | 18:00 | 0 | |
| 4 | Stan | Church | Sunday | 12:00 | 13:00 | 0 | |
+----+--------+--------+-----------+-------+-------+------+--+
我想运行一个mysql查询,检查表中name字段中是否有重复的名称,如果重复字段将dupe字段标记为1,请执行以下操作。
因此,第1行和第2行中的dupe字段应为“ 1”,其余字段应为“ 0”。
感谢您可能提供的任何帮助!我希望我解释正确。
答案 0 :(得分:2)
您可以在CASE语句中使用EXISTS:
select
t.*,
case
when exists (
select 1 from tablename
where id <> t.id and name = t.name
) then 1
else 0
end dupe
from tablename t
答案 1 :(得分:1)
您似乎只关心name
字段。所以:
update t join
(select name
from t
group by name
having count(*) >= 2
) dups
on t.name = dups.name
set dups = 1;