【问题标题】:How to insert, if I need to pick up Primary id for other table如何插入,如果我需要为其他表获取主 ID
【发布时间】:2009-10-22 15:33:29
【问题描述】:
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

我该如何组合这些呢?谢谢

再次,我在此处添加此注释,如何将这些查询组合在一起。所有这些,包括第一个查询 (SELECT *....)

类似这样的: 选择记录,然后插入它们,同时插入这个......

【问题讨论】:

  • 第二个查询有 VALUES,这将来自我的第一个查询(SELECT 部分......)我知道这是一个令人困惑的问题......

标签: php sql mysql


【解决方案1】:

如果您使用的是 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:comment - 抱歉,完全错过了,所以你需要运行 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 替换为这些名称即可。

【讨论】:

  • 这里的选择部分在哪里?我在哪里添加?我知道我是如何误导自己的问题的...基本上 VALUES 来自我的第一个查询...那么我该如何结合呢?
【解决方案2】:

【讨论】:

    猜你喜欢
    • 2012-12-15
    • 2019-11-19
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多