出现这种错误的情况,一般是使用UNION或UNION ALL时,UNION或UNION ALL两边列数不对等的情况下出现的,这是我们需要检查两边的字段是否相等,如果不相等,只需补充完整即可。如果没有多余的数据,可以采用NULL AS 字段来进行补充,其中的字段一定是UNION或UNION ALL其中一边缺少的字段。
例如:
string SelectFrom = ("SELECT test_person.test_person_account,test_person.name,test_process.test_date FROM test_person INNER JOIN test_process ON test_process.test_person_id = test_person.test_person_id UNION SELECT submission_umbrella.submission_unit,test_process.submission_umbrella_id FROM submission_umbrella INNER JOIN test_process ON test_process.submission_umbrella_id = submission_umbrella.submission_umbrella_id");
上述代码便会报错:The used SELECT statements have a different number of columns,改为以下代码便可解决问题。
string SelectFrom = ("SELECT test_person.test_person_account,test_person.name,test_process.test_date,NULL AS submission_unit ,NULL AS submission_umbrella_id FROM test_person INNER JOIN test_process ON test_process.test_person_id = test_person.test_person_id UNION SELECT NULL AS test_person_account,NULL AS name,NULL AS test_date submission_umbrella.submission_unit,test_process.submission_umbrella_id FROM submission_umbrella INNER JOIN test_process ON test_process.submission_umbrella_id = submission_umbrella.submission_umbrella_id");
读者应根据自己的代码进行修改!!!!!