在单个查询中插入选择和更新

时间:2009-10-20 18:44:10

标签: sql mysql

I have 4 tables: tempTBL, linksTBL and categoryTBL, extra

在我的tempTBL上我有:ID,name,url,cat,isinserted columns 在我的linksTBL我有:ID,名称,别名列 在我的categoryTBL上我有:cl_id,link_id,cat_id 在我的extraTBL上我有:id,link_id,value

如何执行单个查询以从tempTBL中选择isinsrted = 0的所有项目,然后将它们插入到linksTBL和插入的每个记录,拾取ID(主要),然后使用cat_id = 88将该ID插入categoryTBL。之后,为link_id插入extraTBL ID,为值插入url。

我知道这太令人困惑了,无论如何我都会发布这个......

这是我到目前为止所做的:

INSERT IGNORE INTO linksTBL (link_id,link_name,alias)
VALUES(NULL,'tex2','hello');         # generate ID by inserting NULL

INSERT INTO categoryTBL(link_id,cat_id)     VALUES(LAST_INSERT_ID(), '88'); #在第二个表中使用ID

我想在这里添加它只选择isinserted = 0和iserts这些记录的项目,并且插入onse,将更改isinserted为1,所以当下次运行时,它不会再添加它们。

3 个答案:

答案 0 :(得分:1)

正如longneck所说,你不能在一个查询中做多个事情,但你可以在一个存储过程中。

答案 1 :(得分:1)

http://dev.mysql.com/doc/refman/5.1/en/insert-select.html

INSERT INTO linksTBL (link_id,link_name,alias)
    SELECT field1, field2, field3
        FROM othertable
    WHERE inserted=0;

答案 2 :(得分:0)

在单个查询中无法做到这一点。您必须插入行,然后运行单独的更新语句。