Saya sedang menulis migrasi data SQL untuk aplikasi yang perlu menyokong pelbagai pangkalan data yang mungkin, termasuk MySQL 5.7. Inilah kod semasa saya:
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;
Ralat semasa berjalan pada MySQL 5.7 Unknown column 's.table_id' in 'on clause'
。我猜测在5.7版本中,ON
Klausa ini lebih ketat daripada versi berikutnya, kerana ia berfungsi dengan baik dalam versi MySQL dan Postgres yang lain. Adakah terdapat sebarang cara untuk memintas sekatan ini? Atau adakah terdapat cara untuk menulis semula pertanyaan? Saya tidak begitu mahir dengan SQL jadi sebarang bantuan akan sangat dihargai.
Tidak jelas mengapa ralat itu berlaku, tetapi anda boleh membetulkannya dengan melakukannya dalam
UPDATE
查询中使用JOIN
dan bukannya subkueri.