mysql - 选择使用不同的 mysql 进行更新

标签 mysql sql

我有下表:

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/

相关文章:

php laravel 插入查询不起作用

php - 删除记录返回 SQLSTATE[42000] 错误

sql - 如何仅使用 'release' 变量对事件进行分组

sql - 如何解决postgresql中group by和aggregate函数的问题

sql - 主键也是星型模式中的外键。是好是坏?

php - 错误: Object of class stdClass could not be converted to string

PHP MySQL递归慢,如何加速?

php - 在 PHP 中并使用 fpdf 生成 PDF 报告

SqlDataAdapter.Fill() 超时 - 底层 Sproc 快速返回

sql - Visual Studio 的数据库设计器?