将 MS Access 与 SQL Server 后端一起使用,我有一个表,基本上存储了另一个表中参数字段的分组。

例如,我将参数存储在 TBL_Parameter 中:(只是数据的一个很小的子集)

Parameter
Iron (Fe)
Iron (Fe)-Dissolved
Iron (Fe)-Total

The table, TBL_ParentParameter looks like this:

Parent        Child
Iron (Fe)     Iron (Fe)-Dissolved
Iron (Fe)     Iron (Fe)-Total

Then I want to create a query to combine all parameters not contained as a child in TBL_ParentParameter with all the ones that are contained in TBL_ParentParameter, so I made the following union query:

SELECT Parameter, Parameter AS Child
FROM TBL_Parameter
WHERE Parameter NOT IN(SELECT Child FROM TBL_ParentParameter)
UNION
SELECT Parent AS Parameter, Child
FROM TBL_ParentParameter

这具有以下预期结果:

父子
铁 (Fe) 铁 (Fe)
铁 (Fe) 铁 (Fe)-溶解
铁 (Fe) 铁 (Fe)-总计

而是给出:

父子
铁 (Fe) 铁 (Fe)
铁 (Fe)-溶解 铁 (Fe)-溶解
铁 (Fe)-总铁 (Fe)-总

现在联合查询中的每个查询都可以单独正常工作,但是当联合时,它们不能正常工作。我已经尝试了这个与直接到 SQL 服务器的直通查询完全相同的查询,它工作得很好,但是如果我基于这个查询的其他查询,我发现它可能需要更长的时间才能运行。那么有没有人知道这里的问题是什么?这是某种 MS Access 错误吗?还是我看错了?

已解决:这似乎是 MS Access 的一个错误,颠倒两个联合子查询的顺序可以解决此问题。

最佳答案

您的查询是正确的。我运行了它,我得到了你发布的倒数第二块代码。

关于sql - 奇怪的 MS Access Union 问题 : Union is not actually union,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11870326/

10-12 17:25