如何在phpmyadmin中一次更改大量记录

时间:2011-03-14 23:27:33

标签: mysql phpmyadmin

我想知道如何在选择某个列类型的情况下一次更新多个记录。

我找到了如何选择记录。我找到了如何更新记录。但我不知道如何一起做它才能发挥作用。

选择

SELECT * FROM users WHERE'type'='new'

更新

更新表
set column = 937

所以基本上我想在'table'中将'column'中的信息更改为937,如果另一列'type'是'new'。

谢谢,

3 个答案:

答案 0 :(得分:5)

只需在WHERE语句中添加UPDATE子句即可实现此目的:

UPDATE `users`
SET `myColumn` = 937
WHERE `type` = 'new'

当然,更改myColumn以匹配您的列名

答案 1 :(得分:0)

您可以使用子查询执行此操作:

update users
set column = 937
where id in (select id from users where type='new')

如果我弄错了,只需更改列名。

答案 2 :(得分:0)

经过一段时间的研究,我发现了另一个解决这个问题的方法。在查询中引用相同的表或字段名称时,MySQL中的名称空间最终会出现重复并失败。要克服此问题,请使用“AS”语法来命名重复项。此外,更新查询通常需要将键字段用作where子句的参数,这通常是您自动递增的ID字段。此示例为这两个问题提供了解决方案。

    UPDATE tbl 
    SET field=newValue 
    WHERE tbl.key IN 
        (SELECT idNew FROM 
            (Select tbl.key AS idNew 
            FROM tbl 
            WHERE field=editValue) AS tblNew);
  • tbl - 表名正在更新

  • 字段 - 更新的目标字段

  • newValue - 替换目标字段中的项目的值

  • tbl.key - 表格中键的字段名称

  • idNew - 表中键的新名称,用于替换名称并防止在查询中重复名称失败。可以是任何字母数字字符串。 'id'或'id_new'或'id_n'

  • editValue - 要更改的值

  • tblNew - 查询的新名称,以防止查询中出现重复的表名。可以是任何字母数字字符串'tbl_n'或'tbl_new'或'tbl_test'

此查询获取匹配具有您想要编辑的值的记录的所有记录的键值,然后更改键和tbl的名称,以便MySQL可以处理它们,最后更新查询运行并更改基于值的值在子查询中提供的键上。

希望这可以节省其他人几个小时!