SQL foreach循环

时间:2011-11-28 16:46:51

标签: sql

我是SQL脚本的新手,无法弄清楚如何为每个循环制作一个特定的。我需要做这样的事情:

我有SitesSiteCrawls个表格。

基本上,对于每个网站,我需要创建一个新的SiteCrawl,而SiteCrawl的{​​{1}}列将等于该网站的ID。

我该怎么做?

5 个答案:

答案 0 :(得分:12)

insert SiteCrawl
(
    Site_ID
)
select
 s.Site_ID
from Site as s
where s.Site_ID not in (select Site_ID from SiteCrawl)

答案 1 :(得分:4)

insert into site_crawl (site_id) values (select site_id from site);

基本上:在普通SQL中没有特定的/ each,你总是将表和行的结果作为一个语句来处理。 所以你也可以说:除了for / each之外,SQL语句不可能是其他东西。 有了这些知识,您可以看到上面的查询将在site_crawl中为站点表中的每个site_id插入一行。你很可能想要使用比这更多的值,但是根据你的问题提供的信息,我可以为你做的一切:)

另外:您想了解更多关于sql是什么以及如何使用它。

玩得开心,SQL很有趣!

答案 2 :(得分:3)

在SQL中,您通常不希望遍历每条记录。这是非常低效的。

您可以执行类似

的操作
insert into SiteCrawl (Site_Id)
select Id from Sites

答案 3 :(得分:1)

insert into SiteCrawls (SiteID)
select SiteID 
  from Sites

答案 4 :(得分:1)

您可以通过触发器

来完成
CREATE TRIGGER tg AFTER INSERT ON `Sites`
FOR EACH ROW
BEGIN
insert into SiteCrawls(Site_ID) values (NEW.id);
END
;