我在MS Access中遇到错误,错误是"两个选定的表或联合查询的查询中的列数不匹配。"
这是我的SQL查询:
SELECT sale_head.suppliername AS sale_head_suppliername,
sale_head.invoiceno AS sale_head_invoiceno, sale_head.invoicedate,
sale_details.invoiceno AS sale_details_invoiceno, sale_details.suppliername AS sale_details_suppliername,
sale_details.product_code, sale_details.qty, sale_details.totalkg, sale_details.Rate, sale_details.subtotal FROM sale_head
INNER JOIN sale_details ON sale_head.[invoiceno] = sale_details.[invoiceno]
UNION ALL select 'Total', sum(sale_details.subtotal) from sale_details
WHERE (((sale_head.suppliername)='Ramkrishna Creation'));
我错过了什么吗?如果是,请告诉我。
答案 0 :(得分:3)
当您将两个或多个查询合并在一起时,每个查询应具有相同数据类型的相同数据列,例如:
SELECT Name,LastName,SUM(Salary) FROM tabel1
UNION
SELECT Text1,Text2,SomeMoney FROM table2
有效(假设Name和Text1,LastName和Text2以及薪水和SomeMoney的数据类型相同,但是:
SELECT Name,LastName,SUM(Salary) FROM tabel1
UNION
SELECT Text1,SomeMoney FROM table2
(cloumns计数不匹配)或
SELECT Name,LastName,SUM(Salary) FROM tabel1
UNION
SELECT Text1,SomeMoney,Text2 FROM table2
(数据类型不匹配)不是有效的联合语句。
更新:我的回答是根据SQL Standard Definition of Union Statement说明的:
UNION运算符用于组合 两个或多个SELECT语句的结果集。
请注意,UNION中的每个SELECT语句必须具有相同的名称 列数。列还必须具有类似的数据类型。 此外,每个SELECT语句中的列必须具有相同的顺序。
答案 1 :(得分:1)
在UNION中,两个数据集必须具有相同的列数,但它们不需要是相同的数据类型
UNION操作中的所有查询都必须请求相同数量的字段;但是,这些字段不必具有相同的大小或数据类型。