INSERT INTO SELECT - 更改值

时间:2018-01-08 16:01:11

标签: php mysqli

使用从一个表复制数据并将其插入另一个表的INSERT INTO SELECT时,如何更改列的值?见例子(下图)

如果有人能帮助我解决这个问题 - 我真的很感激!我试图将数据从一个(主)表复制到另一个表但是更新第二个表上的值。我似乎无法想出这一个!谢谢! enter image description here

代码:

$sql = " INSERT INTO table2 SELECT * FROM table1 WHERE volume = 'Story of a Girl';

3 个答案:

答案 0 :(得分:3)

INSERT INTO table2 (username, volume, name, image, content, cssanimate) 
    SELECT 'tim', volume, name, image, content, cssanimate 
    FROM table1 where volume='Story of a Girl';

如果列出要插入的列,则可以使用自定义值替换列。

你也可以变得更复杂:

INSERT INTO table2 (username, volume, name, image, content, cssanimate) 
    SELECT 
        CASE 
            WHEN 'admin' THEN 'tim' 
            ELSE username 
        END CASE, 
        volume, name, image, content, cssanimate 
    FROM table1;

答案 1 :(得分:0)

插入不是正确的选项,您必须使用UPDATE选项。

尝试使用:

UPDATE table_2 SET table_2.username = table_1.username FROM table_1 AS table_1 INNER JOIN table_2 AS table_2 ON table_1.id = table_2.id WHERE table_1.volume = 'Story of a Girl';

如果这有助于你不要忘记投票!如果它没有投票选择。

答案 2 :(得分:0)

您还可以通过使用

在插入时修改列
INSERT INTO ...() SELECT ...REPLACE(fieldname, 'somestring','anotherstring') ...

甚至使用子查询

INSERT INTO ...() SELECT ...(SELECT id FROM tableName WHERE somefield = 'asd')...