我只想在满足某些条件时才进行 mysql 更新。
我的表中的列是 fname、mname、lname(名字、中间名、姓氏)。
数据例如,
fname mname lname
1 RONALD DAVID VALE
2 RONALD D VALE
3 RONALD VALE
4 JACK A SMITH
5 JACK B SMITH
6 JACK SMITH
7 MICHAEL JAMES ADAMS
8 MICHAEL JOHN ADAMS
9 MICHAEL J ADAMS
10 MICHAEL ADAMS
如果姓氏和名字相同,那么我检查中间名的第一个字母。然后我想在我们的例子中将中间名更新为“DAVID”,因为我们想让他们成为同一个人。但是,如果有两个不同的中间名,例如行 4, 5
那么,我们希望保持原样,因为我们认为三个 JACK SMITH 是不同的人。
此外,如果有两个以相同字母开头的不同中间名,我们不会更新这些名称。例如,行 7,8,9,10
保持不变。
最佳答案
如果我理解正确,您正在寻找具有多个记录的名字/姓氏对,并且这些记录中只有一个中间名首字母。
以下更新应该可以处理此问题:
update table t join
(select lname, fname, max(mname) as mname
from table t2
having count(*) > 1 and min(mname) = max(mname)
) t2
on t.lname = t2.lname and t.fname = t2.fname
set t.mname = t2.mname
where t.mname is null;
关于如果满足某些条件则 MySQL 更新(或创建过程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28664466/