我正在為一個需要支援多個可能的資料庫(包括MySQL 5.7)的應用程式編寫SQL資料遷移。以下是我目前的程式碼:
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;
在MySQL 5.7上執行時出現錯誤Unknown column 's.table_id' in 'on clause'
。我猜在5.7版本中,ON
子句比後續版本更嚴格,因為它在其他版本的MySQL和Postgres中都能正常運作。有沒有辦法繞過這個限制?或者有沒有辦法重寫查詢?我對SQL不是很擅長,所以任何幫助都將不勝感激。
目前還不清楚為什麼會出現錯誤,但是你可以透過在
UPDATE
查詢中使用JOIN
而不是子查詢來解決它。