我有下表:
ID, initials, surname, company, active
1, p, abc, com1, 0
2, p, abc, com1, 0
3, c, acb, com1, 0
4, c, def, com1, 0
5, c, def, com1, 0
现在我想将“姓名首字母、姓氏、公司”的重复组合更新为状态 1,结果如下:
ID, initials, surname, company, active
1, p, abc, com1, 0
2, p, abc, com1, 1
3, c, acb, com1, 0
4, c, def, com1, 0
5, c, def, com1, 1
选择有效:
SELECT DISTINCT initials, surname, company
FROM table
我试过了,但是没有用:
UPDATE table
SET active = 1
WHERE EXISTS( SELECT DISTINCT initials, surname, company)
最佳答案
UPDATE table AS t
JOIN table AS tt
ON t.initials = tt.initials
AND t.surname = tt.surname
AND t.company = tt.company
AND t.id > tt.id
SET t.active = 1;
也就是说,对于每一行,如果存在具有较低 ID、具有相同首字母、姓氏和公司的另一行,则更新它。
这是一个 sqlfiddle
关于mysql - 选择使用不同的 mysql 进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11986038/