Ich schreibe SQL-Datenmigrationen für eine Anwendung, die mehrere mögliche Datenbanken unterstützen muss, einschließlich MySQL 5.7. Hier ist mein aktueller Code:
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;
Fehler bei der Ausführung unter MySQL 5.7 Unknown column 's.table_id' in 'on clause'
。我猜测在5.7版本中,ON
Die Klausel ist strenger als nachfolgende Versionen, da sie in anderen Versionen von MySQL und Postgres einwandfrei funktioniert. Gibt es eine Möglichkeit, diese Einschränkung zu umgehen? Oder gibt es eine Möglichkeit, die Abfrage umzuschreiben? Da ich mit SQL nicht besonders gut bin, wäre ich für jede Hilfe sehr dankbar.
目前还不清楚为什么会出现错误,但是你可以通过在
UPDATE
查询中使用JOIN
而不是子查询来解决它。