我在mysql服务器5.7.27上,尝试使用格式化的json值将数据从一个表复制到另一个表。
假设有两个表格:
files(id, applicant_id, passport, license);
attachments(id, applicant_id, passport, license);
files
表中的“ passport and license”列的字符串数据类型带有其文字值,而在附件中,该数据类型定义为json,需要与其他数据(例如文件名)一起保存。我想将数据从
files
表复制到attachments
表,并为json数据添加一些其他格式。INSERT INTO attachments (applicant_id, license) FROM files (applicant_id, '{"\name\": \"Driving License\", "\file\": license}');
但这给了我一个错误:
3140无效的JSON文本:“无效值”。
解析
license
的值的正确语法是什么? 最佳答案
看来您正在寻找INSERT INTO ... SELECT
:
INSERT INTO attachments (applicant_id, license)
SELECT
applicant_id,
CONCAT('{"\name\": \"Driving License\", "\file\": \"', license, '\"}')
FROM files;
在这里,我使用
CONCAT
用files
表中的许可证值构建所需的JSON文字值。关于mysql - 复制并保存为JSON格式的SQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57635891/