1

场景:需要对 20,000 个人的成员进行抽样调查。调查样本量为 20000 名成员中的 3500 名。所有会员个人都在表 tblMember 中。前一年进行了同样的调查,被调查的成员在 tblSurvey08 中。会员数据可能会在一年中发生变化(例如新的电子邮件地址等),但 MemberID 数据保持不变。

如何从 tblMember 中删除包含 tblSurvey08 的 MemberID/记录,以创建要调查的潜在成员的新表(我们称之为 tblPotentialSurvey09)。同样,单个成员的记录可能与不同的表不匹配,但 MemberID 字段将保持不变。

我对这些东西还很陌生,但我似乎在谷歌搜索解决方案时遇到了问题——我可以使用 EXCEPT 函数,但个人成员的记录从一个表到下一个表不一定相同——只是 MemberID 可能是相同的.

谢谢

4

4 回答 4

5
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 调查中的成员。此连接比 NOT IN 构造更有效。新表不是一个好主意,因为您正在复制数据。带有上述查询的视图将是更好的选择。

于 2009-03-18T23:22:34.577 回答
0

如果我不理解您的问题,我提前道歉,但我认为这就是您的要求。您可以使用该insert into语句。

insert into tblPotentialSurvey09
select your_criteria from tblMember where tblMember.MemberId not in (
    select MemberId from tblSurvey08
)
于 2009-03-18T23:22:48.633 回答
0

首先,我不会仅仅为了选择潜在成员而创建一个新表。相反,我会创建一个新的真/假 (1/0) 字段来告诉他们是否符合条件。

但是,如果您仍想将数据复制到新表中,请执行以下操作:

INSERT INTO tblSurvey00 (MemberID) 
  SELECT MemberID
  FROM tblMember m
  WHERE NOT EXISTS (SELECT 1 FROM tblSurvey09 s WHERE s.MemberID = m.MemberID)

如果您只想按照我的建议创建一个新字段,类似的查询就可以完成这项工作。

于 2009-03-18T23:23:24.060 回答
0

外连接应该做:

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
于 2009-03-18T23:24:51.623 回答