我正在尝试从公司表中获取 id,其中该 id 尚未在 crawlLog 表中。然后我需要将该 companyId 插入到 crawlLog 表中。
我需要在一次调用中执行此操作,以便并行爬虫在其他爬虫选择了一个 url 但尚未将其插入爬网日志后不会拉取相同的 url。我不想因为产生其他问题而锁定表。
我从以下两个查询中收到此错误:
You can't specify target table 'crawlLog' for update in FROM clause
这是我尝试做同样事情的两个查询。
INSERT INTO crawlLog (companyId, timeStartCrawling)
VALUES
(
(
SELECT companies.id FROM companies
LEFT OUTER JOIN crawlLog
ON companies.id = crawlLog.companyId
WHERE crawlLog.companyId IS NULL
LIMIT 1
),
now()
)
我也试过这个,但得到同样的错误:
INSERT INTO crawlLog (companyId, timeStartCrawling)
VALUES
(
(
SELECT id
FROM companies
WHERE id NOT IN
(
SELECT companyId
FROM crawlLog
)
LIMIT 1
),
now()
)