1. 程式人生 > >The used select statements have a different number of columns解決辦法

The used select statements have a different number of columns解決辦法

1. 問題原因 

這個異常出現在兩個表使用union all進行合併時遇到的,

表A存在的欄位數量和表B最初是一致的,包括欄位名字和型別都是一致,使用union all連線無異常;

後來由於需要在表B添加了一個新的欄位,導致兩張表的欄位在數量上不一致,出現了異常;

2. 解決辦法

在使用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'

或者直接列出具體的欄位,保證順序一致性