mysql - 从mysql中的同一个表复制行但改变某些列
问题描述
我需要从同一个表中复制一行并编辑某些列以创建新行的帮助。
示例表(是的,我知道没有主键):
CREATE TABLE myTable (
columnToNotChange JSON, -- this column does not change
columnToNotChangeTwo VARCHAR(5), -- this column does not change either
columnToChange BOOLEAN -- this column I want to change
);
假设我有一排:
columnToNotChange = '{json_object: []}'
columnToNotChangeTwo = "const"
columnToChange = true
我想知道的是如何从 columnToNotChange 和 ColumnToNotChangeTwo 复制数据但更改 columnToChange 以在表 myTable 中创建一个新行。
我听说过 UPDATE FROM (SELECT) 语句,但没有找到关于 UPDATE FROM (SELECT) 语句的 MySQL 任何好的文档。
我看过Generic Stackoverflow Question、MySQL Documentation on The UPDATE statement和W3Schools SQL UPDATE Statement
我很感激任何帮助。
解决方案
假设您要复制 pk id = 1 的行
如果您想要一个新行并且除 columnToNotChange 、 columnToNotChangeTwo 之外的所有列都为空值,您应该使用 INSERT SELECT
然后
insert into myTable ( columnToNotChange , columnToNotChangeTwo )
select columnToNotChange , columnToNotChangeTwo
from myTable
where id = 1
如果您想为列 columnToChange 分配一些值,然后在第 3 列分配,那么您需要的值
insert into myTable ( columnToNotChange , columnToNotChangeTwo ,columnToChange )
select columnToNotChange , columnToNotChangeTwo, 'THE VALUE YOU WANT FOR columnToChange'
from myTable
where id = 1
推荐阅读
- arrays - 将 product line_items 存储在与供应商的关联数组中
- sql - 使用别名的 SQL 中的多个联接
- google-sheets - 如何在 Google 表格中溢出数字和日期?
- sql-server - SQL Server 作业保持在 run_status = 4
- docker - docker-compose up 和环境变量
- python - Python 多处理 - 如何修改对象?
- c++ - C/C++ vscode 扩展在没有时显示错误
- javascript - 如何在用户加入时自动为用户分配角色?
- java - 在 maven-compiler-plugin 中设置 annotationProcessor 然后@Slf4j 不起作用:找不到符号
- python - 如何在熊猫中删除选定的列?