首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何比较两个表并删除匹配字段(非匹配记录)

如何比较两个表并删除匹配字段(非匹配记录)
EN

Stack Overflow用户
提问于 2009-03-18 23:15:13
回答 4查看 3.4K关注 0票数 1

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

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

我在这方面是新手,但我似乎在谷歌上搜索解决方案时遇到了问题-我可以使用EXCEPT函数,但成员个人的记录不一定从一个表到下一个表是相同的-只是MemberID可能是相同的。

谢谢

EN

回答 4

Stack Overflow用户

发布于 2009-03-18 23:22:35

代码语言:javascript
运行
复制
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构造更有效。创建一个新的表并不是一个好主意,因为您正在复制数据。具有上述查询的视图将是更好的选择。

票数 5
EN

Stack Overflow用户

发布于 2009-03-18 23:22:49

如果我没听懂你的问题,我提前道歉,但我想这就是你想要的。您可以使用insert into语句。

代码语言:javascript
运行
复制
insert into tblPotentialSurvey09
select your_criteria from tblMember where tblMember.MemberId not in (
    select MemberId from tblSurvey08
)
票数 0
EN

Stack Overflow用户

发布于 2009-03-18 23:23:24

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

但是,如果您仍然希望将数据复制到新表中,可以使用以下方法:

代码语言:javascript
运行
复制
INSERT INTO tblSurvey00 (MemberID) 
  SELECT MemberID
  FROM tblMember m
  WHERE NOT EXISTS (SELECT 1 FROM tblSurvey09 s WHERE s.MemberID = m.MemberID)

如果您只想像我建议的那样创建一个新字段,使用类似的查询就可以了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/660464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档