使用子查询插入查询

dev*_*ang 2 mysql insert subquery

我试图使用以下查询在表中插入数据并出错

insert into filmo_person_song (person_id, song_id, role_id)
select person_id
from filmo_person_song fps, filmo_song fs, filmo_role fr
where fps.song_id = fs.song_id
  and fps.role_id = fr.role_id
  and fps.person_id = 43629;
Run Code Online (Sandbox Code Playgroud)

ERROR 1136(21S01):列数与第1行的值计数不匹配

我已准确指定了字段..

Jør*_*ode 8

您试图在每行中插入一个值,但您已指定要写入的列:

insert into filmo_person_song (person_id, song_id, role_id)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
select person_id
       ^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

您需要列出select语句中所有三列的值.以下可能有效:

insert into filmo_person_song (person_id, song_id, role_id)
select fps.person_id, fs.song_id, fr.role_id
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)