情景:需要对20,000名成员进行抽样调查。调查样本量为20000名成员中的3500名。所有会员都在表tblMember。上一年进行了同样的调查,被调查的成员都在tblSurvey08。会员数据可能会在一年内发生变化(例如新的电子邮件地址等),但会员ID数据保持不变。
如何从tblMember中删除包含tblSurvey08的MemberID /记录,以创建要调查的潜在成员的新表(让我们称之为tblPotentialSurvey09)。同样,单个成员的记录可能与不同的表不匹配,但MemberID字段将保持不变。
我对这个东西相当新,但我似乎遇到了一个问题谷歌搜索解决方案 - 我可以使用EXCEPT功能,但个人成员的记录不一定是从一个表到下一个表 - 只是会员ID可能是相同的。
谢谢
答案 0 :(得分: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构造更有效。 由于您正在复制数据,因此新表不是一个好主意。使用上述查询的视图将是更好的选择。
答案 1 :(得分:0)
如果我不理解你的问题,我会提前道歉,但我认为这就是你所要求的。您可以使用insert into
声明。
insert into tblPotentialSurvey09
select your_criteria from tblMember where tblMember.MemberId not in (
select MemberId from tblSurvey08
)
答案 2 :(得分:0)
首先,我不会仅为选择潜在成员而创建新表。相反,我会创建一个新的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)
如果您只是想按照我的建议创建一个新字段,那么类似的查询就可以完成这项工作。
答案 3 :(得分: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