我已经发布了我的 sql server 查询。当我运行这段代码时,我得到一个错误:
子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。
我尝试了很多方法,但仍然出错 - 我该如何解决?
我已经发布了我的 sql server 查询。当我运行这段代码时,我得到一个错误:
子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。
我尝试了很多方法,但仍然出错 - 我该如何解决?
该错误非常简单。您的子查询返回超过 1 行。由于查询的工作方式,这是不允许的。子句中的事物SELECT
不能定义多行,这必须在FROM
子句中。
有很多方法可以解决这个问题,其中一些:
SELECT (SELECT MAX(field) ...)
SELECT (SELECT field ... GROUP BY field)
SELECT (SELECT TOP 1 field ...)
问题是以上所有内容GROUP BY
(除了可能不起作用的 可能例外)很可能会返回不需要的数据 -原始查询中的每一行只有一行。
您可能希望使用XML PATH
将所有这些值连接到一个单元格中。
或者,如果您对多行JOIN
感到满意,请改用:
SELECT someAlias.field
...
JOIN table as someAlias ON someAlias.somefield = someothertable.someotherfield
如:
SELECT A.MR_EMPLOYEE_CHECKROLL_TYPE_ID
FROM T_PR_CHECKROLL_WISE_LOG
JOIN T_TR_CLOSING
ON T_TR_CLOSING.CLOSING_ID = T_PR_CHECKROLL_WISE_LOG.CLOSING_ID
JOIN T_PR_EMPLOYEE_LOG
ON T_PR_EMPLOYEE_LOG.CLOSING_ID = T_TR_CLOSING.CLOSING_ID
JOIN T_PR_EMPLOYEE_LOG AS A
ON A.EMP_ID = T_PR_CHECKROLL_WISE_LOG.EMP_ID
WHERE T_PR_CHECKROLL_WISE_LOG.CLOSING_ID = '1'