Rumah > Soal Jawab > teks badan
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.
P粉4974634732024-01-11 16:02:23
Tidak jelas mengapa ralat itu berlaku, tetapi anda boleh membetulkannya dengan melakukannya dalam UPDATE
查询中使用 JOIN
dan bukannya subkueri.
UPDATE sandboxes s JOIN permissions AS p on p.group_id = s.group_id JOIN tables AS t ON t.table_id = s.table_id AND p.object = CONCAT('/db/', t.db_id, '/schema/', t.schema, '/table/', s.table_id, '/query/segmented/') SET s.permission_id = p.id