【问题标题】:MS Access : SQL Query "Union All"MS Access:SQL 查询“联合所有”
【发布时间】:2015-10-20 12:23:51
【问题描述】:

我有以下问题,我有一个表单,我为它创建了一个用于过滤的组合框。我的行源 SQL 查询如下所示:

SELECT Employee_ComboBox.LastName,Employee_ComboBox.FirstName, Employee_ComboBox.ID,Employee_ComboBox.OperatingEntity,Employee_ComboBox.OrganisationNameFull
FROM Employee_ComboBox
ORDER BY Employee_ComboBox.[ID];

我想添加 UNION SELECT "(All)" FROM 以便在我的组合框中获得 (All)。问题是我不知道如何向 SQL 查询添加超过 1 列。我试过类似的东西:

SELECT Employee_ComboBox.LastName FROM Employee_ComboBox UNION SELECT "(All)" FROM Employee_ComboBox; 这有效,但是当我尝试添加其他列时我做错了..示例:

SELECT Employee_ComboBox.LastName,Employee_ComboBox.FirstName FROM Employee_ComboBox UNION SELECT "(All)" FROM Employee_ComboBox;

关于如何在我的组合框中添加所有列和(全部)值的任何想法?

兄弟,

【问题讨论】:

    标签: sql ms-access ms-access-2010 ms-access-2007


    【解决方案1】:

    这可能有效。两个候选连接中的列数应该相等

    SELECT Employee_ComboBox.LastName, Employee_ComboBox.FirstName
        FROM Employee_ComboBox
        UNION ALL
        SELECT "(All)" as LastName,"" as FirstName FROM Employee_ComboBox;  
    

    【讨论】:

    • 是的,这就是我要找的。谢谢
    【解决方案2】:

    您需要为它们添加值,以便UNION 的子查询具有相同的列数。 NULL 通常是一个合理的值:

    SELECT Employee_ComboBox.LastName, Employee_ComboBox.FirstName
    FROM Employee_ComboBox
    UNION ALL
    SELECT "(All)", NULL FROM Employee_ComboBox;
    

    您可能需要空字符串。此外,请使用 UNION ALL 而不是 UNIONUNION 会产生删除重复项的开销,这在这种情况下是不必要的。

    【讨论】:

    • 谢谢,这看起来很棒.. 但我尝试在SELECT Employee_ComboBox.LastName, Employee_ComboBox.FirstName, Employee_ComboBox.ID 之后添加,但它不起作用。我收到一条错误消息:“两个选定表中的列数或联合查询的查询不匹配”.. 我遗漏了什么,添加 1 列时是否需要添加Something ales?
    猜你喜欢
    • 1970-01-01
    • 2016-10-22
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多