PostgreSQL数据库错误

insert into tb_b (select * from tb_a where cln = 20);
ERROR:  column "xxxx" is of type bigint but expression is of type character varying
LINE 1: insert into tb_b (select * from tb_a where cln...

遇到了这个问题,以前一直这么写插入的都没问题,怎么回事呢?提示类型不对。纳闷了很久。
后来对比两张表发现,原来是修改表的时候字段的顺序不对应了。所以把语句修改为:

insert into tb_b(clna, clnb, clnc, cln) (select clna, clnb, clnc, cln from tb_a where cln = 20);

这样就可以了,现在发现SQL当年学的相当马虎啊。需要恶补一下,顺便推荐一个书不错:《SQL必知必会》。