0

我以前在这里得到了很大的帮助,所以我希望有人可以帮助我解决这个问题。谁能告诉我为什么查询 #1 会导致错误“子查询返回超过 1 个值...”但查询 #2 工作正常吗?由于我使用“IN”而不是“=”来限定结果,我认为多个值是可以接受的。

关于我如何做到这一点的任何建议?

--Query #1
SELECT _Column1_ from _View1_
WHERE
_Column2_ IN( CASE
WHEN ISNUMERIC(1000110) = 1 AND LEN(1000110) > 3
THEN (
SELECT  _Column2_
FROM    _Table1_
WHERE   _Column2_ = CONVERT(Int, LEFT(1000110, 4))
OR      _Column3_ = CONVERT(Int, LEFT(1000110, 4))
)
WHEN ISNUMERIC(1000110) = 1 AND LEN(1000110) <= 3
THEN 0
ELSE (SELECT _Column2_ from _Table1_)
END)

注意:在最终查询中,1000110 实际上是一个用户名变量,可以返回一个数字用户名或字母数字

--Query #2
WHEN ISNUMERIC(1000110) = 1 AND LEN(1000110) > 3
THEN CONVERT(Int, LEFT(1000110, 4))
WHEN ISNUMERIC(1000110) = 1 AND LEN(1000110) <= 3
THEN 0
ELSE (SELECT _Column2_ from _Table1_)
END)
4

1 回答 1

2

SELECT _Column2_ from _Table1_最有可能返回多个结果。在这种情况下,只允许一个值。

作为测试尝试SELECT TOP(1) _Column2_ from _Table1_

于 2013-01-08T22:32:59.960 回答