Ton*_*bet 6 mysql sql clone temp-tables
我想这样做
而我正在尝试这样:
CREATE TEMPORARY TABLE tmptable SELECT * FROM blogs WHERE lan = 2;
UPDATE tmptable SET lan = 1;
INSERT INTO blogs SELECT * FROM tmptable; dump database tmptable;
Run Code Online (Sandbox Code Playgroud)
但是对于科西嘉,我得到重复的关键错误......
我该如何预防呢?
-编辑-
我试过了:
CREATE TEMPORARY TABLE tmptable SELECT * FROM blogs WHERE lan = 2;
UPDATE tmptable SET lan = 1;
ALTER TABLE tmptable DROP id;
INSERT INTO blogs SELECT * FROM tmptable; dump database tmptable;
Run Code Online (Sandbox Code Playgroud)
但那么 Column count doesn't match value count at row 1
-编辑-
我相信这会起作用(它确实有,因为我知道有多少记录存在)
CREATE TEMPORARY TABLE tmptable SELECT * FROM blogs WHERE lan = 2;
UPDATE tmptable SET lan = 1;
UPDATE tmptable SET id = id + 1000;
INSERT INTO blogs SELECT * FROM tmptable;
Run Code Online (Sandbox Code Playgroud)
但是我怎么能正确地做到这一点?(只需为主键(id)设置下一个可用的自动增量值(不含PHP /类似))
-编辑-
也许是这样的???
CREATE TEMPORARY TABLE tmptable SELECT * FROM blogs WHERE lan = 2;
UPDATE tmptable SET lan = 1;
UPDATE tmptable SET id = id + (SELECT id FROM blogs ORDER BY id DESC LIMIT 1);
INSERT INTO blogs SELECT * FROM tmptable;
Run Code Online (Sandbox Code Playgroud)
Bar*_*mar 14
不需要临时表.
INSERT INTO blogs (lan, col1, col2, col3, ...)
SELECT 1, col1, col2, col3, ...
FROM blogs
WHERE lan = 2
Run Code Online (Sandbox Code Playgroud)
替换col1, col2, col3, ...为除lan和之外的所有列的列表id.
小智 5
CREATE TEMPORARY TABLE tmptable SELECT * FROM blogs WHERE lan = 2;
UPDATE tmptable SET lan = 1;
alter table tmptable drop column id;
INSERT INTO blogs SELECT NULL,tmptable.* FROM tmptable;
Run Code Online (Sandbox Code Playgroud)
假设“id”列是第一列。