【问题标题】:MS ACCESS Subquery not working - "At Most one record can be returned by this subquery" (convert from T-SQL)MS ACCESS 子查询不起作用 - “此子查询最多可以返回一条记录”(从 T-SQL 转换)
【发布时间】:2020-12-28 19:45:50
【问题描述】:

我正在尝试将一些 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 中工作正常,但我不知道如何修改它以进行访问。

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

提前致谢

【问题讨论】:

  • 似乎电子邮件表有超过 1 个未设置行。你要哪一个?
  • SELECT TRIM(EMail) where Email != 'Not Set' 在任何数据库中都无效,不仅是 Access。

标签: sql ms-access subquery


【解决方案1】:

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

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

【讨论】:

  • 当然,这是有道理的!非常感谢,我从来没有考虑过!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-08
  • 1970-01-01
相关资源
最近更新 更多