我尝试使用以下查询在表中插入数据,但出现错误
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;
错误1136(21S01):列计数与第1行的值计数不匹配
我已经指定了字段准确..
6条答案
按热度按时间6qfn3psc1#
您试图在每行插入一个值,但您指定了要写入的三个列:
您需要在select语句中列出所有三列的值。以下方法可能有效:
jei2mxaa2#
您只是从子查询中选择了
person_id
,而在insert子句中指定了person_id
、song_id
和role_id
。还必须选择子查询中缺少的字段。你可能想要这样的东西:
r8uurelv3#
你只是指定一个字段(
select person_id
)插入到表中,而列规范规定person_id
,sond_id
* 和 *role_id
将被插入。这应该会更好:
bqucvtff4#
将其更改为:
oogrdqng5#
您要求它为3列(person_id,song_id,role_id)添加值,但只提供1:
人员标识
试试看:
或:
bn31dyow6#
子查询返回值必须与插入查询匹配,如下所示。