# 问题原因
这个异常出现在两个表使用 union all 进行合并时遇到的,
表 A 存在的字段数量和表 B 最初是一致的,包括字段名字和类型都是一致,使用 union all 连接无异常;
后来由于需要在表 B 添加了一个新的字段,导致两张表的字段在数量上不一致,出现了异常;
# 解决办法
在使用 union all 进行合并操作时,使用 null as "xxx" 解决,如下,由之前的 SQL 语句
SELECT * | |
FROM project t | |
LEFT JOIN ( | |
SELECT * FROM biz_a_contract | |
UNION ALL | |
SELECT * FROM biz_b_contract | |
) a ON a.id = t.contract_id | |
WHERE | |
t.id = '200' |
改为
SELECT * | |
FROM project t | |
LEFT JOIN ( | |
SELECT * FROM biz_a_contract | |
UNION ALL | |
SELECT tt.*,null AS 'xx' FROM biz_b_contract tt | |
) a ON a.id = t.contract_id | |
WHERE | |
t.id = '200' |
或者直接列出具体的字段,保证顺序一致性