简体   繁体   English

从 mysql 中的同一表中复制行但更改某些列

[英]Copy row from same table in mysql but alter certain columns

I need help with copying a row from the same table and editing certain columns to create a new row.我需要从同一个表中复制一行并编辑某些列以创建新行的帮助。

Example Table (yes I know there is not a primary key):示例表(是的,我知道没有主键):

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 
);

Say I have a row:假设我有一排:

columnToNotChange = '{json_object: []}'
columnToNotChangeTwo = "const"
columnToChange = true

What I want to know is how do you copy the data from the columnToNotChange and ColumnToNotChangeTwo but alter the columnToChange to create a new row in the table, myTable.我想知道的是如何从 columnToNotChange 和 ColumnToNotChangeTwo 复制数据但更改 columnToChange 以在表 myTable 中创建一个新行。

I've heard of UPDATE FROM (SELECT) statements but haven't found any good documentation for MySQL on UPDATE FROM (SELECT) statements.我听说过 UPDATE FROM (SELECT) 语句,但在 UPDATE FROM (SELECT) 语句中没有找到 MySQL 的任何好的文档。

I have looked Generic Stackoverflow Question , MySQL Documentation on The UPDATE statement , and W3Schools SQL UPDATE Statement我查看了Generic Stackoverflow QuestionMySQL Documentation on The UPDATE statementW3Schools SQL UPDATE Statement

I appreciate any help.我很感激任何帮助。

assuming you want copy a rows with pk id = 1假设您要复制 pk id = 1 的行

you should use an INSERT SELECT您应该使用 INSERT SELECT
if you want a new row and null values all the columns except columnToNotChange, columnToNotChangeTwo如果你想要一个新行和 null 值除 columnToNotChange、columnToNotChangeTwo 之外的所有列

then然后

insert into myTable  ( columnToNotChange , columnToNotChangeTwo  )
select columnToNotChange , columnToNotChangeTwo 
from myTable  
where id = 1 

if you want assign some value to the column columnToChange then assign at the 3th column then value you need如果您想为列 columnToChange 分配一些值,然后在第 3 列分配,那么您需要的值

insert into myTable  ( columnToNotChange , columnToNotChangeTwo ,columnToChange   )
select columnToNotChange , columnToNotChangeTwo, 'THE VALUE YOU WANT FOR columnToChange'
from myTable  
where id = 1 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM