mysql - 用于更新表中的行、插入/更新同一个表的 SQL 语句

标签 mysql sql database

我这里有一个看似非常简单的情况,但我从未处理过。我研究了这个问题,发现情况非常相似,但还不够接近,无法在生产数据库上运行。

我有 1 个包含 2 列的表。我想要查找第 1 列中共享相同值的所有条目,并更新其中一行的第 2 列。请记住,下面的示例过于简化。这是一个大型数据库,表中包含许多行...我需要更新 col_2 中的特定值以获取 col_1 中的匹配值之一。

For instance:

        col_1     col_2
        1111     green
        1111     blue
        2222     green
        2222     blue

    Becomes:
    col_1     col_2
    1111     green
    1111     red
    2222     green
    2222     red

根据我收集的信息,有些内容类似于更新语句,但我对查找匹配值并仅更新其中一个值的逻辑感到困惑。 任何帮助表示赞赏。

最佳答案

假设每个 col1col2 值都是唯一的,您可以使用 join 选择一个值:

update t join
       (select col1, max(col2) as max_col2
        from t
        group by col1
       ) tt
       on tt.col1  t.col1
    set col2 = 'red';

关于mysql - 用于更新表中的行、插入/更新同一个表的 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59546084/

相关文章:

mysql in 子句 vs 一次提交多次删除

mysql - 不使用限制和子查询无法从 emp 表中找到第二高的薪水

sql - 我怎样才能加快这段代码的速度?

sql - 如何提高 SQL Server Select 查询的性能?

sql - postgresql 在可序列化事务上永远挂起

mysql - 如何为表单生成器及其记录创建数据库表?

java - 如何使用 Hibernate 和 mysql 对包含逗号分隔值的列使用 where 条件

javascript - Node.js:访问mysql数据库

php - 如何检查我的 ODBC 数据源是否存在于 PHP 中?

具有即插即用数据库的 Java 应用程序