在Access应用程序中,我使用UNION连接了两个结果集。这个方法工作了很多年,但现在它停止工作了,因为在合并后,一个文本字段只显示一些粗俗的汉字。
这是设置:
1. select id,fieldA,1 as fieldB from tableA where cond=1
2. select id,"" as fieldA,2 as fieldB from tableA where cond=0这些查询分别显示正确的结果。但在我加入他们之后
select * from subquery1 UNION select * from subquery2来自fieldA的数据只是一些汉字,比如㼄W。我不知道这是从哪里来的。
经过一些尝试后,我发现以下查询显示了正确的结果:
select * from subquery1 where id=1 UNION select * from subquery2 where id=1一个很好的副作用是性能的提高,尽管每次我都要更改querydef。,但是为什么这个和旧版本停止工作呢?
发布于 2015-04-03 15:27:25
与其显示空字符串"",不如尝试添加Null
SELECT id, fieldA, 1 as fieldB FROM tableA WHERE cond=1
UNION SELECT id,Null as fieldA,2 as fieldB FROM tableA where cond=0;发布于 2020-11-16 15:02:19
关于信息,我简单地通过使用UNION ALL解决了一个类似的问题,其附带好处是性能得到了改善。
发布于 2022-05-07 22:26:26
问题是Access使用联合查询中的第一个SELECT语句中的类型来确定查询中字段的类型。如果在这个第一个select块中使用一个null值,它就不知道要使用什么类型,并且搞砸了。最简单的解决方案是重新排序查询中的select块,以便第一个查询不包含空项。或者,最常用的解决方案是创建一个空表,其中包含您所需的每种类型的一个字段,但表中没有数据:-
Null Values Table
Field Name Data Type
Null Id AutoNumbered
Null Int Number
Null Currency Currency
Null Date Date/time
Null Text Short Text然后在使用此空表的条目的第一个实块之前合并一个虚拟选择块:-
SELECT
[Null Date] AS [Date],
[Null Id] AS [Index],
[Null Text] AS [Description],
[Null Currency] AS [Income Tax],
[Null Currency] AS [Employers NI],
[Null Currency] AS [Employees NI],
[Null Currency] AS [Amounts Due],
[Null Currency] AS [Payments],
[Null Currency] AS [Balance]
FROM [Null Values Table];
UNION SELECT
[Date],
Int(Null) AS [Index],
"Salary" AS [Description],
[Income Tax],
[Employers NI],
[Employees NI],
[Income Tax] + [Employers NI] + [Employees NI] AS [Amounts Due],
Int(Null) AS [Payments],
[Income Tax] + [Employers NI] + [Employees NI] AS [Balance]
FROM [Salaries Table];
UNION SELECT ...https://stackoverflow.com/questions/29433245
复制相似问题