我有我没有访问到修改一个观点,我不得不做出这样使我行巫某列SELECT查询为空(空,不为空)
在这种观点,我有:
Oid| Name | Email | Phone
在这种观点的记录总数超过98万行。
这是我的尝试:
SELECT DISTINCT * FROM View WHERE Phone = ''
SELECT DISTINCT * FROM View WHERE datalength(Phone)<1
SELECT DISTINCT * FROM View WHERE Len(Phone)<1
在所有这些我得到的错误:
[Err] 21000 - [SQL Server]Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
如果我做一个SELECT没有试图让空行形成了“电话”它的工作原理,我也尝试过检查,如果一些的Oid用重复:
SELECT
Oid, COUNT(*)
FROM
View
GROUP BY
Oid
HAVING
COUNT(*) > 1
但我没有得到任何结果(不重复)
有趣的是,如果我做一个TOP 1000(发现在手机空的),它的工作原理,所以我不明白发生了什么。
我做错了吗?
由于评论暗示这里的问题将在视图中。什么可能不会立即明显的是,从视图读取执行计划可能大相径庭取决于你采用什么样的条件。在这种情况下,我假设由子查询产生的电话。该视图将假设子查询只返回一行。如果您查询视图没有电话,从来没有进行子查询。
如果需要手机,然后进行子查询,从而导致错误。
尝试与执行计划运行这些开启,并应帮助您了解其中的问题所在。
这是功能,您可以好好利用的,我用它定期向有条件的依赖于参数表的连接。