我将视图复制到新表中。但是,某些记录存在于视图中,但不在表格中。缺失记录
而且,我无法找到所有失踪的记录,当我使用SELECT ... NOT IN:
DECLARE @email NVARCHAR(256)='[email protected]'
SELECT Email FROM dbo.vw_DirectoryData WHERE [email protected]
SELECT Email FROM dbo.tblDirectoryData WHERE [email protected]
SELECT Email FROM dbo.vw_DirectoryData WHERE email NOT IN(SELECT email FROM dbo.tblDirectoryData)
Result:
Email
[email protected]
(1 row(s) affected)
Email
(0 row(s) affected)
email
(0 row(s) affected)
我尝试另一个approche:
DECLARE @email NVARCHAR(256)='[email protected]'
SELECT vw_DirectoryData.Email, tblDirectoryData.Email AS [Email in Table]
FROM vw_DirectoryData LEFT OUTER JOIN
tblDirectoryData ON vw_DirectoryData.Email = tblDirectoryData.Email WHERE [email protected]
SELECT vw_DirectoryData.Email, tblDirectoryData.Email AS [Email in Table]
FROM vw_DirectoryData LEFT OUTER JOIN
tblDirectoryData ON vw_DirectoryData.Email = tblDirectoryData.Email WHERE tblDirectoryData.Email IS null
Result:
Email
Email in Table
[email protected]
NULL
(1 row(s) affected)
Email Email in Table
(0 row(s) affected)
任何意见如何克服这种问题?
如果您使用子查询方法,您需要明确指出您拥有哪些表的电子邮件地址。但更好的方法可能是使用EXCEPT。 https://msdn.microsoft.com/en-us/library/ms188055.aspx –
** ** 1:是否有名为'Email'和'email'(低和大写名称),或者不同的领域,你使用不区分大小写的排序规则,允许您引用独立于大小写的列名称? ** 2 **:视图和表格匹配的行数(即COUNT(*)')是否相同? 'COUNT(DISTINCT Email)'怎么样? – Phylyp