首页 > 解决方案 > MS ACCESS 子查询不起作用 - “此子查询最多可以返回一条记录”(从 T-SQL 转换)

问题描述

我正在尝试将一些 SQL 代码移动到 Access(这样同事可以在我度假时运行!)

我在原始 SQL (MSSQL) 中拥有的是一个非常基本的子查询:

Select Customer_code,
    (SELECT TRIM(EMail) where Email != 'Not Set') AS EMAIL_1
From customers

(不是完整的代码!)

但是,Access 不喜欢这样,并且似乎需要在子查询中使用“FROM”子句。

所以如果我使用(SELECT TRIM(EMail) FROM Customer where Email <> 'Not Set') AS EMAIL_1

然后我收到“此子查询最多可以返回一条记录”错误消息。

子查询在 SSMS 中工作正常,但我不知道如何修改它以进行访问。

任何帮助表示赞赏(我试图查看其他问题,但似乎没有一个与我正在尝试做的事情有关)。这里还有另一个子查询,但我已经单独测试过,它们都以同样的方式出错。

提前致谢

标签: sqlms-accesssubquery

解决方案


这个没有from子句的子查询几乎没有意义,即使在 SQL Server 中也是如此:它所做的只是检查email当前行的值,因此它相当于一个case表达式。在 MS Access 中,您可以使用iif()

select customer_code, iif(email <> 'Not Set', trim(email), null) as email_1
from customers

推荐阅读