如果我需要为其他表提取主ID,如何插入

时间:2009-10-22 15:33:29

标签: php sql mysql

SELECT * FROM tableFoo
LEFT JOIN tableBar ON tableFoo.commonColumn = tableBar.commonColumn
WHERE tableBar.commonColumn IS NULL

上面会选择记录,我想插入 下面的代码会将id插入第三个表。

INSERT IGNORE INTO jos_mt_links (link_id,link_name,alias)
VALUES(NULL,'tex2','hello');         # generate ID by inserting NULL
INSERT INTO jos_mt_cl (link_id,cat_id)
VALUES(LAST_INSERT_ID(),'88');  # use ID in second table

我如何组合这些呢? THX

同样,我在这里添加了这个注释,如何将这些查询组合起来。所有这些,包括第一个查询(SELECT * ....)

这样的事情: SELECT记录,然后插入它们,并插入....

2 个答案:

答案 0 :(得分:4)

如果你正在使用php,你可以在两个查询之间使用mysql_insert_id()

mysql_query("INSERT IGNORE INTO jos_mt_links (link_id,link_name,alias)
VALUES(NULL,'tex2','hello')");
$newid=mysql_insert_id();
mysql_query("INSERT INTO jos_mt_cl (link_id,cat_id)
VALUES(LAST_INSERT_ID(),'".$newid."')");

re:评论 - 抱歉,总错过了,所以你需要运行3个查询

$result=mysql_query("SELECT * FROM tableFoo LEFT JOIN tableBar ON tableFoo.commonColumn = tableBar.commonColumn WHERE tableBar.commonColumn IS NULL");
$row=mysql_fetch_assoc($result);
mysql_query("INSERT IGNORE INTO jos_mt_links (link_id,link_name,alias)
    VALUES(NULL,'".$row['linkfield']."','".$row['aliasfield']."')");
mysql_query("INSERT INTO jos_mt_cl (link_id,cat_id)
    VALUES(LAST_INSERT_ID(),'".$row['catidfield']."')");

我不知道tableFoo和tableBar中字段的名称是什么,所以只需用这些名称替换linkfield / aliasfield / catidfield。

答案 1 :(得分:0)