Waarom een subselectie gebruiken? INSERT INTO ... SELECT bestaat:
INSERT INTO crawlLog (companyId, timeStartCrawling)
SELECT companies.id, NOW()
FROM companies
LEFT OUTER JOIN crawlLog
ON companies.id = crawlLog.companyId
WHERE crawlLog.companyId IS NULL
LIMIT 1
En op die manier zou het niet moeten klagen over het gebruik van een tabel in zowel het INSERT- als het SELECT-gedeelte