【发布时间】:2015-02-23 17:01:31
【问题描述】:
我在这里搜索过,但我仍然不确定我哪里出错了。
我正在尝试找出哪些电子邮件不会在 a_customer 表中重复出现 其中电子邮件在 dbo.Remail 查询将运行大约 20 分钟,然后将出现此错误消息。
将 varchar 值转换为数据类型 int 时转换失败。
SET ANSI_WARNINGS OFF
select email from dbo.Remail with (nolock)
where email in (select cast(count(email) as int) from a_customer
group by email
having count(email) < 1
)
【问题讨论】:
-
那个查询没有任何意义。您正在选择没有电子邮件的电子邮件计数并按该计数搜索
Remail表? -
WHERE email IN (SELECT COUNT()....)?,这没有任何意义 -
我假设您的电子邮件列不是整数?您的 where 谓词正在搜索其中 email 的值 = a_customer 的行数的行。我怀疑您不想计算,而是应该使用电子邮件。 fwiw,你知道 NOLOCK 提示带来的一切吗?从您的查询看起来可能没问题,但太多人不理解该提示的所有后果。 blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere
标签: sql error-handling varchar