我正在尝试从公司表中获取一个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()
)