我有两张表t
和t1
。
假设t
包含以下数据
id name a b c o p
1 'John' 1 1 1 23 5
和t1
id1 a1 b1 c1 o1
1 6 7 2 23
2 9 3 7 23
3 25 7 12 2
我希望在一些操作之后得到表t
,如下例所示:
id name a b c o
1 'John' 1 1 1 23
2 'John' 6 7 2 23
3 'John' 9 3 7 23
我的目的是在t1.o1=t.o
。
有什么想法吗?我需要使用存储过程吗?
答案 0 :(得分:2)
您可以使用以下代码将表格t1
中所需的数据插入到表格t
中:
INSERT INTO t (name, a, b, c, o)
SELECT t.name, t1.a1, t1.b1, t1.c1, t1.o1
FROM t1
INNER JOIN t on t1.o1 = t.o
您没有说明表id
的{{1}}列是否启用了AUTO_INCREMENT选项。我想这个选项已启用。
答案 1 :(得分:1)
您可以执行以下操作,
insert into t (name,a,b,c,o,p) (select name,a1,b1,c1,o1,p from t1 inner join t on t.o=t1.o1);
假设你仍然需要表t中的列p。
http://sqlfiddle.com/#!2/efb65/1
刚刚注意到结果表中的序列,所以相应地更新了答案,假设t.id中的自动增量 http://sqlfiddle.com/#!2/a97c06/1
否则,您需要先删除列,然后插入值。
ALTER TABLE t DROP p;
insert into t (name,a,b,c,o) (select name,a1,b1,c1,o1 from t1 inner join t on t.o=t1.o1);
答案 2 :(得分:1)
答案 3 :(得分:1)
你可以这样做。 SQL Fiddle是here
SELECT @rownum := 0;
INSERT INTO t
SELECT t.id+(@rownum := @rownum + 1), t.name, t1.a1, t1.b1, t1.c1, t1.o1, t.p
FROM t1
INNER JOIN t on t1.o1 = t.o;
答案 4 :(得分:0)
INSERT INTO tableName
SELECT t.id, t.name, t.a, t.b, t.c, t.o
FROM t
INNER JOIN t1 ON t.o=t1.o1
tableName
是表格的名称,您要在其中插入数据。 insert into语句下的查询选择要在表中插入的数据。
如果需要将此值插入表t,则应使用以下代码:
INSERT INTO t (id, name, a, b, c, o)
SELECT t.id, t.name, t.a, t.b, t.c, t.o
FROM t
INNER JOIN t1 ON t.o=t1.o1
答案 5 :(得分:-1)
这可能会对您有所帮助MySQL Insert Where query
INSERT INTO t
SELECT t1.o1
FROM AnotherTable
INNER JOIN t on t.o=t1.o1