距离我在Access中使用UNION查询已经有好几年了,但是我不明白为什么这不起作用。我想念什么?
SELECT IDAudit, TableName, RowID, ChangeDate, IDAPSCase
FROM dbo_APSCEI INNER JOIN (dbo_Audit INNER JOIN dbo_TableType ON dbo_Audit.IDTableType = dbo_TableType.IDTableType)
ON dbo_APSCEI.IDAPSCEI = dbo_Audit.RowID
WHERE (((TableName)="APSCEI") AND ((IDAPSCase)=379017))
UNION SELECT IDAudit, TableName, RowID, ChangeDate, IDAPSCase
FROM dbo_APCSUN INNER JOIN (dbo_Audit INNER JOIN dbo_TableType ON dbo_Audit.IDTableType = dbo_TableType.IDTableType)
ON dbo_APCSUN.IDAPCSUN= dbo_Audit.RowID
WHERE (((TableName)="APCSUN") AND ((IDAPSCase)=379017))
UNION SELECT IDAudit, TableName, RowID, ChangeDate, IDAPSCase
FROM dbo_APSCAI INNER JOIN (dbo_Audit INNER JOIN dbo_TableType ON dbo_Audit.IDTableType = dbo_TableType.IDTableType)
ON dbo_APSCAI.IDAPSCAI = dbo_audit.RowID
WHERE (((TableName)="APSCAI") AND ((IDAPSCase)=379017))
ORDER BY ChangeDate DESC , IDAPSCase;
分别使用所有3条SELECT语句。我可以删除3个SELECT语句中的任何一个,它将起作用。但是,使用这3种命令,尝试运行甚至保存它,都会使Access崩溃。但是,尽管崩溃了,但它确实保存了编辑。 (Microsoft Access已停止工作。Windows可以尝试恢复您的信息。)
所涉及的3个表中的2个(dbo_Audit和dbo_TableType)始终相同;只有第3个表格会发生变化。输出列始终相同。语法始终相同。
如果我在任何WHERE子句中添加了额外的')',它将捕获错误而不会崩溃。当我删除它并尝试运行或保存它时,它再次使Access崩溃。我的意思是语法检查器可以处理它,而查询优化器则不能。
答案 0 :(得分:0)
在我看来,排序方式仅影响最后一个查询。
如果您需要订购结果,请进行如下查询:
SELECT * FROM MyUnionQuery ORDER BY ChangeDate DESC , IDAPSCase
一切都应该很好!