转换varchar值时Sql转换失败

转换varchar值时Sql转换失败,sql,error-handling,varchar,Sql,Error Handling,Varchar,我已经在这里搜索过了,但我仍然不确定我错在哪里 我想找出哪些电子邮件不会在a_客户表中重复 如果电子邮件位于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

我已经在这里搜索过了,但我仍然不确定我错在哪里

我想找出哪些电子邮件不会在a_客户表中重复 如果电子邮件位于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 
  )
听起来电子邮件是varchar,而子查询的返回类型是int。服务器尝试将外部电子邮件转换为int,但失败


看起来您希望选择所有尚未重发的电子邮件,但您的查询并不是这样做的。一点也没有。

这个查询没有任何意义。您正在选择没有电子邮件的电子邮件的计数,并按该计数搜索Remail表?选择计数中的电子邮件在哪里…?,这不会使任何感官假设您的电子邮件列不是整数?where谓词搜索的行中,email的值=来自某个客户的行数。我怀疑你不想数数,而是应该使用电子邮件。fwiw,你知道NOLOCK提示给桌子带来的一切吗?从查询的外观来看,这可能没问题,但太多人不理解该提示的所有后果。