从多个表复制选定的信息而不使用大量查询?

时间:2010-07-04 12:46:45

标签: mysql copy

我正在使用php和mysql作为网页,我想重用三个数据库表中的信息,类似于“另存为”操作。

表格相关为1-many,然后是1-many,树结构。

到目前为止,我已经通过使用php(类似于一个巨型表)展平树结构并将其存储在数组中来实现它。然后循环遍历每一行,甚至每行的每一部分,并为每一行插入带有查询的相应表。它有点工作,但是有很多代码可以看看每个帖子是否都有来自第三个表的信息(它可能是空的)。

现在,我的问题是,这可以以更有效的方式实施吗?以这种方式可能会对数据库进行大量查询。

这里的问题似乎是如何关联新帖子。我看过'SELECT INTO',但是由于我需要关联新键,我看不出它是如何工作的。另外,mysql_insert_id只给我最新的id,而不是全部。

1 个答案:

答案 0 :(得分:0)

复制我知道的行的通常最快和最优雅的方法是:

复制行:

INSERT INTO tablename SELECT * FROM tablename WHERE id = 1;

查询新记录的ID:

SELECT LAST_INSERT_ID() AS lastID;  

将该ID存储在PHP变量(此处未显示)中,然后更新相关表中的密钥:

UPDATE related_table_name SET key = '$lastID'

id需要是一个自动增量列才能使用,并且插入后应立即使用LAST_INSERT_ID()。)

参考: