场景:需要对20,000个人的成员进行抽样调查。调查样本量为20000名成员中的3,500名。所有成员个人都在表tblMember中。前一年进行了同样的调查,接受调查的成员都在tblSurvey08中。会员数据可能会随时间变化(例如,新的电子邮件地址等)但是MemberID数据保持不变。
如何从tblMember中删除包含tblSurvey08的成员it /记录,以创建要调查的潜在成员的新表(我们称其为tblPotentialSurvey09)。同样,单个成员的记录可能与不同表中的记录不匹配,但MemberID字段将保持不变。
我在这方面是新手,但我似乎在谷歌上搜索解决方案时遇到了问题-我可以使用EXCEPT函数,但成员个人的记录不一定从一个表到下一个表是相同的-只是MemberID可能是相同的。
谢谢
发布于 2009-03-18 23:22:35
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-18 23:22:49
如果我没听懂你的问题,我提前道歉,但我想这就是你想要的。您可以使用insert into语句。
insert into tblPotentialSurvey09
select your_criteria from tblMember where tblMember.MemberId not in (
    select MemberId from tblSurvey08
)发布于 2009-03-18 23:23:24
首先,我不会仅仅为了选择潜在的成员而创建一个新的表。相反,我会创建一个新的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)如果您只想像我建议的那样创建一个新字段,使用类似的查询就可以了。
https://stackoverflow.com/questions/660464
复制相似问题