Sql 如何比较两个表并删除匹配字段(不匹配记录)
情景:需要对20000名成员进行抽样调查。调查样本量为20000名成员中的3500名。所有会员个人都在表tblMember中。上一年进行了相同的调查,接受调查的成员在TBL调查08中。会员数据可能会在一年中发生变化(例如新的电子邮件地址等),但会员ID数据保持不变 如何从tblMember中删除包含tblSurvey08的MemberID/记录,以创建一个新的待调查潜在成员表(称之为tblPotentialSurvey09)。同样,单个成员的记录可能与不同表中的记录不匹配,但MemberID字段将保持不变 我对这方面比较陌生,但我似乎在谷歌搜索解决方案时遇到了问题-我可以使用EXCEPT函数,但每个表中的每个成员的记录不一定相同-只是MemberID可能相同 谢谢Sql 如何比较两个表并删除匹配字段(不匹配记录),sql,sql-server,duplicates,Sql,Sql Server,Duplicates,情景:需要对20000名成员进行抽样调查。调查样本量为20000名成员中的3500名。所有会员个人都在表tblMember中。上一年进行了相同的调查,接受调查的成员在TBL调查08中。会员数据可能会在一年中发生变化(例如新的电子邮件地址等),但会员ID数据保持不变 如何从tblMember中删除包含tblSurvey08的MemberID/记录,以创建一个新的待调查潜在成员表(称之为tblPotentialSurvey09)。同样,单个成员的记录可能与不同表中的记录不匹配,但MemberID字段
SELECT
* (replace with column list)
FROM
member m
LEFT JOIN
tblSurvey08 s08
ON m.member_id = s08.member_id
WHERE
s08.member_id IS NULL
将只为您提供不在08调查中的成员。此联接比不在构造中的联接更有效。
新表不是一个好主意,因为您正在复制数据。使用上述查询的视图将是更好的选择
将只为您提供不在08调查中的成员。此联接比不在构造中的联接更有效。
新表不是一个好主意,因为您正在复制数据。使用上述查询的视图将是一个更好的选择。如果我不理解您的问题,我提前表示歉意,但我认为这正是您所要求的。您可以使用
insert-into
语句
insert into tblPotentialSurvey09
select your_criteria from tblMember where tblMember.MemberId not in (
select MemberId from tblSurvey08
)
如果我不理解你的问题,我提前道歉,但我认为这是你的要求。您可以使用
insert-into
语句
insert into tblPotentialSurvey09
select your_criteria from tblMember where tblMember.MemberId not in (
select MemberId from tblSurvey08
)
首先,我不会仅仅为了选择潜在的成员而创建一个新表。相反,我会创建一个新的true/false(1/0)字段,告诉他们是否符合条件 但是,如果您仍然希望将数据复制到新表中,可以使用以下方法:
INSERT INTO tblSurvey00 (MemberID)
SELECT MemberID
FROM tblMember m
WHERE NOT EXISTS (SELECT 1 FROM tblSurvey09 s WHERE s.MemberID = m.MemberID)
如果您只是想按照我的建议创建一个新字段,那么类似的查询也可以完成这项工作。首先,我不会创建一个新表来选择潜在的成员。相反,我会创建一个新的true/false(1/0)字段,告诉他们是否符合条件 但是,如果您仍然希望将数据复制到新表中,可以使用以下方法:
INSERT INTO tblSurvey00 (MemberID)
SELECT MemberID
FROM tblMember m
WHERE NOT EXISTS (SELECT 1 FROM tblSurvey09 s WHERE s.MemberID = m.MemberID)
如果您只是想按照我的建议创建一个新字段,则可以使用类似的查询来完成此任务。外部联接应该可以:
select m_09.MemberID
from tblMembers m_09 left outer join
tblSurvey08 m_08 on m_09.MemberID = m_08.MemberID
where
m_08.MemberID is null
外部联接应执行以下操作:
select m_09.MemberID
from tblMembers m_09 left outer join
tblSurvey08 m_08 on m_09.MemberID = m_08.MemberID
where
m_08.MemberID is null
“不在”将是相当昂贵的,因为它将包括许多价值观!INSERT INTO的问题是您必须先创建目标表。@肯·怀特:这个问题专门为目标表命名。我没有添加目标表的要求,因为“不在”会包含很多值,所以会非常昂贵!INSERT INTO的问题是您必须先创建目标表。@肯·怀特:这个问题专门为目标表命名。我没有添加目标表的要求。