首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“由.引起的循环参考”Access SQL中的错误(但不是T中的错误)

“由.引起的循环参考”Access SQL中的错误(但不是T中的错误)
EN

Stack Overflow用户
提问于 2016-01-14 13:28:05
回答 1查看 887关注 0票数 1

我有以下SQL语句,它返回Server 2012中所需的结果:

代码语言:javascript
复制
SELECT
    S.ONOMA
    , S.DIEY
    , S.POLH
    , S.TK
    , S.IDIOT
    , S.KODIKOS
    , S.AFM
FROM 
    SYNERG AS S
INNER JOIN 
    (SELECT
         G.AFM, MIN(KODIKOS) AS KODIKOS
     FROM SYNERG AS G
     WHERE LEN(ISNULL(AFM, '')) != 0
     GROUP BY AFM) AS I ON S.KODIKOS = I.KODIKOS
ORDER BY
    S.AFM

但是,当我在MS 2007中运行相同的SQL语句时,会得到一个错误:

查询定义的选择列表中由'KODIKOS‘引起的循环引用。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-14 15:14:01

正如链接中HansUp所解释的那样:

计算字段的别名不能与用于计算该字段的任何字段名相同。

这可能相当烦人(尤指)。如果它是一个由查询返回的字段),但是没有办法绕过它。

因此,您需要更改别名,例如:

代码语言:javascript
复制
SELECT
    S.ONOMA
    , S.DIEY
    , S.POLH
    , S.TK
    , S.IDIOT
    , S.KODIKOS
    , S.AFM
FROM 
    SYNERG AS S
INNER JOIN 
    (SELECT
         G.AFM, MIN(KODIKOS) AS MinKODIKOS
     FROM SYNERG AS G
     WHERE LEN(Nz(AFM, '')) <> 0
     GROUP BY AFM) AS I ON S.KODIKOS = I.MinKODIKOS
ORDER BY
    S.AFM

还请注意,Access中存在一个IsNull()函数,但含义不同(它接受一个参数并返回一个布尔值)。对应的函数是Nz()

(谢谢@HansUp),不平等运算符是<>,而不是!=。我也总是在Server中使用<>,不需要使事情变得过于复杂。:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34790855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档