MariaDB插入子查询报错1046:跨表复制字段问题排查
问题解答
自增字段id的问题
你的video表自增字段id本身没有问题。MariaDB中,自增主键在插入数据时如果不主动指定值,会自动生成唯一的递增数值,所以你在插入语句中不需要包含id字段,这部分的写法是正确的,报错和它无关。
插入语句的错误点
你用了INSERT INTO ... VALUES (SELECT ...)的错误语法,VALUES关键字后面只能跟具体的常量值列表(比如VALUES ('http://xxx', 123)),不能直接嵌套子查询。正确的写法是去掉VALUES,直接把SELECT语句放在INSERT INTO后面。
修正后的SQL语句
INSERT INTO videos (video_url, user_id) SELECT youtube_url AS video_url, user_id FROM ads WHERE ads.youtube_url != "";
另外,你还可以考虑给video_source字段赋值(比如固定为'youtube'),因为当前语句里这个字段会被设为默认值(如果没设置默认值会是NULL),如果需要的话可以改成:
INSERT INTO videos (video_source, video_url, user_id) SELECT 'youtube' AS video_source, youtube_url AS video_url, user_id FROM ads WHERE ads.youtube_url != "";
内容的提问来源于stack exchange,提问作者Palm Boom
相关产品推荐
相关产品推荐

