我想知道如何在选择某个列类型的情况下一次更新多个记录。
我找到了如何选择记录。我找到了如何更新记录。但我不知道如何一起做它才能发挥作用。
选择
SELECT * FROM users
WHERE'type'='new'
更新
更新表
set column = 937
所以基本上我想在'table'中将'column'中的信息更改为937,如果另一列'type'是'new'。
谢谢,
答案 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可以处理它们,最后更新查询运行并更改基于值的值在子查询中提供的键上。
希望这可以节省其他人几个小时!