Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 丢失的记录_Sql_Sql Server - Fatal编程技术网

Sql 丢失的记录

Sql 丢失的记录,sql,sql-server,Sql,Sql Server,我将视图复制到新表中。但是,有些记录存在于视图中,但不存在于表中 此外,我不能找到所有丢失的记录时,我使用选择。。。不在: DECLARE @email NVARCHAR(256)='xxx@xxx.com' SELECT Email FROM dbo.vw_DirectoryData WHERE Email=@email SELECT Email FROM dbo.tblDirectoryData WHERE Email=@email SELECT Email FROM dbo.vw_Dire

我将视图复制到新表中。但是,有些记录存在于视图中,但不存在于表中

此外,我不能找到所有丢失的记录时,我使用选择。。。不在:

DECLARE @email NVARCHAR(256)='xxx@xxx.com'
SELECT Email FROM dbo.vw_DirectoryData WHERE Email=@email
SELECT Email FROM dbo.tblDirectoryData WHERE Email=@email
SELECT Email FROM dbo.vw_DirectoryData WHERE email NOT IN(SELECT email FROM dbo.tblDirectoryData)

Result:

Email
xxx@xxx.com
(1 row(s) affected)

Email
(0 row(s) affected)

email
(0 row(s) affected)
我尝试了另一种方法:

有没有克服此问题的建议?

尝试使用“不存在”:

SELECT viw.Email
FROM dbo.vw_DirectoryData viw 
WHERE NOT EXISTS(SELECT tbl.* FROM dbo.tblDirectoryData tbl WHERE tbl.Email = viw.Email)
你的

如果你去掉所有的空值就行了。因此,添加WHERE子句

NOT IN (SELECT email FROM dbo.tblDirectoryData WHERE email IS NOT NULL)

将NULL视为未知,因此,如果电子邮件未知,它不知道它是否等于某个值,可能是…

我发现,问题在于数据类型。我从不同的表中读取数据来创建视图。该视图使用UNION ALL组合来自其他三个视图的数据


我通过创建SSIS包来解决这个问题,该包读取源数据,然后将其插入标准表中。然后读取数据,在相同的视图中应用我需要的所有格式和联接。

如果使用子查询方法,则需要明确说明您拥有哪些表的电子邮件地址。但更好的方法可能是使用“除外”。1:是否有单独的字段名为Email和Email,分别使用小写和大写名称,或者您是否使用不区分大小写的排序规则,允许您独立于大小写引用列名?2:视图和表之间的行计数,即计数*是否匹配?电子邮件怎么样?不幸的是它不起作用。我做了以下操作:截断表,然后从视图插入到表,然后运行脚本,仍然没有显示记录。顺便说一下,表和视图中的记录数是相同的
NOT IN (SELECT email FROM dbo.tblDirectoryData)
NOT IN (SELECT email FROM dbo.tblDirectoryData WHERE email IS NOT NULL)