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調査に含まれていないメンバーのみを提供します。この結合は、NOTIN構造よりも効率的です。データを複製しているので、新しいテーブルはそれほど素晴らしいアイデアではありません。上記のクエリを使用したビューの方が適しています。

于 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

まず、潜在的なメンバーを選択するためだけに新しいテーブルを作成することはしません。代わりに、適格かどうかを示す新しい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)

私が提案したように新しいフィールドを作成したいだけなら、同様のクエリがその仕事をします。

于 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 に答える