Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment réécrire cette requête MySQL afin qu'elle ne génère pas cette erreur :vous ne pouvez pas spécifier la table cible 'crawlLog' pour la mise à jour dans la clause FROM ?

Pourquoi utiliser une sous-sélection ? INSERT INTO ... SELECT existe :

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

Et de cette façon, il ne devrait pas se plaindre d'utiliser une table à la fois dans la partie INSERT et SELECT