J'écris des migrations de données SQL pour une application qui doit prendre en charge plusieurs bases de données possibles, y compris MySQL 5.7. Voici mon code actuel :
UPDATE sandboxes s SET permission_id = ( SELECT p.id FROM permissions p JOIN tables t ON t.id = s.table_id WHERE p.object LIKE CONCAT('/db/', t.db_id, '/schema/', t.schema, '/table/', s.table_id, '/query/segmented/') AND p.group_id = s.group_id LIMIT 1 ) WHERE permission_id IS NULL;
Erreur lors de l'exécution sur MySQL 5.7 Unknown column 's.table_id' in 'on clause'
。我猜测在5.7版本中,ON
La clause est plus stricte que les versions ultérieures, car elle fonctionne bien dans d'autres versions de MySQL et Postgres. Existe-t-il un moyen de contourner cette restriction ? Ou existe-t-il un moyen de réécrire la requête ? Je ne suis pas très bon avec SQL donc toute aide serait grandement appréciée.
La raison pour laquelle l'erreur se produit n'est pas claire, mais vous pouvez la corriger en le faisant dans
UPDATE
查询中使用JOIN
au lieu d'une sous-requête.