Mysql查询 - 插入新数据

时间:2013-12-10 09:12:29

标签: mysql sql

我有两张表tt1。 假设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

中插入新列

有什么想法吗?我需要使用存储过程吗?

6 个答案:

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

http://sqlfiddle.com/#!2/ddccc/1

答案 2 :(得分:1)

如果没有看到表t的确切表格架构,就很难确定,但假设id列是auto_increment列且p列是{ {1}}能够

NULL

这是 SQLFiddle 演示

答案 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