【问题标题】:replace (change ids) in phpMyAdmin在 phpMyAdmin 中替换(更改 ID)
【发布时间】:2021-03-21 21:06:48
【问题描述】:

我在 phpMyadmin 中有一个名为 Circuits 的表,其中有一列 MCBs_id,我想将 id 22 更改为 id 19,将 id 23 更改为 id 20,将 id 24 更改为 id 20。

如何运行脚本以使用 SQL 查询一次性更改所有内容?

【问题讨论】:

  • 请提供表结构,以及样本数据和想要的输出,MCBs_id是主键吗?
  • 它不是主键而是表的一部分,类型为int,长度为11,默认为null和空票。期望的输出是用提到的那些替换上面的id

标签: sql phpmyadmin


【解决方案1】:

这是更新字段 MCBs_id 的值的查询:

UPDATE Circuits SET MCBs_id = 19 WHERE MCBs_id = 22;
UPDATE Circuits SET MCBs_id = 20 WHERE MCBs_id = 23;
UPDATE Circuits SET MCBs_id = 20 WHERE MCBs_id = 24;

考虑到所有满足条件 (WHERE) 的行都将在每个查询中更新。

【讨论】:

  • 这样做后它影响了另一列,该列是一个带有值的下拉列表,现在我想上传旧数据库并按原样修复它,但是在导入时我得到一个 #1050 - 表'电路'已经存在,我该如何解决它
  • 您可以将表 'Circuits' 重命名为 'Circuits_old':ALTER TABLE Circuits RENAME TO Circuits_old;
  • #1022 - 无法写入;表'#sql-15be1_70a510'中的重复键
  • 您的行似乎具有相同的主键值。主键在每一行中必须是唯一的。
  • 但是表格导入得很好。
【解决方案2】:

那么你需要这样做:

;with cte as (
select Id , MCBs_id 
from yourtable 
where MCBs_id in ( 22,23,24)
)

update t 
Set MCBs_id = case cte.MCBs_id when 22 then 19 
                               when 23 then 20
                               when 24 then 20
from yourtable t
join cte 
 on t.Id = cte.Id

【讨论】:

  • 这样做后它影响了另一列,该列是一个带有值的下拉列表,现在我想上传旧数据库并按原样修复它,但是在导入时我得到一个 #1050 - 表'电路'已经存在,我该如何解决它
猜你喜欢
  • 2018-07-20
  • 2018-02-23
  • 1970-01-01
  • 2012-06-28
  • 2014-07-17
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多