【问题标题】:SELECT without FROM Clause不带 FROM 子句的 SELECT
【发布时间】:2018-08-18 11:28:11
【问题描述】:

我正在为我的 MS Access 数据库编写 SQL 语句,目的是计算来自 3 个不同查询的值,所以我尝试了这种方式:

SELECT(query1 + query2 + query3) AS Qtd

每个查询从聚合函数计数中返回一个唯一值,即query1 = SELECT Count(something) FROM Table WHERE...

一切正常,但 MS Access 需要 FROM 子句。当我在该查询中放置一个表时(不更改上面的 SELECT 语句),我最终得到了行的色调,每一行都是来自 Qtd 列的预期结果。

那么有什么方法可以跳过FROM 子句,或者唯一的解决方法是写TOP 1(或DISTINCT),因为FROM 子句中不必要的表,所以不会得到重复行的音调?

【问题讨论】:

    标签: sql database ms-access select


    【解决方案1】:

    考虑聚合查询的交叉连接(逗号分隔表):

    SELECT (query1.CntColumn + query2.CntColumn + query3.CntColumn) AS Qtd
    FROM query1, query2, query3
    

    【讨论】:

    • 这个解决方案运行良好,在我看来是最简单的一个。谢谢!
    【解决方案2】:

    您可以union all 查询,然后sum 所有结果:

    SELECT SUM(cnt)
    FROM   (SELECT COUNT(*) AS cnt FROM table1 WHERE ...
            UNION ALL
            SELECT COUNT(*) AS cnt FROM table2 WHERE ...
            -- Etc..
           ) t
    

    【讨论】:

    • 我尝试在 MS Access 中运行,我得到“查询很复杂”
    • 请将查询的底层 SQL 语句发布为计算列,保留字,数据类型处理可能是问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多