【问题标题】:Access query with no returned results没有返回结果的访问查询
【发布时间】:2010-12-15 15:18:58
【问题描述】:

我在 Access 中有一个查询,想知道在没有返回行时是否可以使用 where not exists 子句为每个字段显示特定文本。

查询示例:

Select Field1, Field2, Field3  
From TableA  
Where Field1 = "test";

如果没有返回结果,我希望返回以下内容:

Field1 = "test"  
Field2 = "not provided"  
Field2 = "not provided"  

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    怎么样:

    SELECT Field1, Field2
    FROM Table
    WHERE ID=3
    UNION ALL SELECT DISTINCT "None","None" FROM AnyTableithAtLeastOneRow
    WHERE 3 NOT IN (SELECT ID FROM Table)
    

    【讨论】:

    • 如果 Table 为空,这将不返回任何行,不是吗?
    • 可以使用任何表,包括系统表,保证不为空。
    • 我是否必须使用我想要的值创建表 AnyTableithAtLeastOneRow 才能正常工作?
    • @Rick 不,这正是它所说的,您可以使用任何始终确保至少有一行的表。如果合适,您可以使用主表(上表)。
    • 很难将其移植到 Access,因为我在通过 ID 字段(最初未说明)链接到父报表的子报表上使用它。
    【解决方案2】:

    按照您的要求做的通常方法是:

    Select Field1, isnull(Field2, 'Not Provided'), isnull(Field3, 'Not Provided')
    

    编辑 哎呀,您正在使用 Access,在这种情况下,等效功能是“nz”(什么?!:p)

    Select Field1, nz(Field2, 'Not Provided'), nz(Field3, 'Not Provided')
    

    【讨论】:

    • 它甚至不是null,没有返回任何行,yesno?
    • 出于好奇,有人在 Access 中尝试过这个吗?因为对我来说,根本没有返回任何行。换句话说,当没有行时,Nz 没有帮助。
    • 如果表中没有任何内容,这将不返回任何内容。如果数据中有行有空字段,它将返回这些错误值。
    猜你喜欢
    • 1970-01-01
    • 2016-08-22
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    相关资源
    最近更新 更多