3

この問題を解決できません。助けてもらえますか?

私はテーブルを持っていますdbo.Users--> このテーブルにはEmail列があり、多くの電子メールの中にあります

別のテーブルがありますdbo.aspnet_Membership--> このテーブルにはEmail列があり、多くの電子メールの中にあります

Emailsそして、両方の列にないものだけを抽出します。

例えば:

tab1 col1 :

111@111.com
222@222.com
333@333.com

タブ 2 列 2:

111@111.com
222@222.com

333@333.comすべてのメールを抽出 (または削除) します。

4

4 に答える 4

4

SQL Server 2008 を使用しているため、次のEXCEPTように set 演算子を使用できます。

SELECT EMAIL FROM Table1
EXCEPT 
SELECT Email FROM table2

SQL フィドルのデモ

更新:Table1これにより、2 番目のテーブルには存在しない、 にあるすべてのメールが表示されます。ただし、2 つのテーブルに表示されていないすべてのメールを取得したい場合 ( @gilly3に感謝)、次のようにしてください。

(
  SELECT EMAIL FROM Table1
  EXCEPT 
  SELECT Email FROM table2
)
UNION ALL
(
  SELECT EMAIL FROM Table2
  EXCEPT 
  SELECT Email FROM table1
)

更新された SQL Fiddle デモ

于 2012-11-09T23:26:28.647 に答える
2
SELECT *
FROM dbo.Users u FULL JOIN dbo.aspnet_Membership m ON u.Email = m.Email
WHERE u.Email IS NULL OR m.Email IS NULL

SQL Fiddleのデモ

于 2012-11-10T20:57:55.250 に答える
1
Select *
from dbo.Users
where email not in
(select email
from dbo.aspnet_Membership)
于 2012-11-09T23:23:33.490 に答える
0

これを試して

Select * From Users WHERE email NOT IN
(
  Select email From Users u
  JOIN aspnet_Membership m
     ON u.email = m.email
)



Select * From aspnet_Membership WHERE email NOT IN
(
  Select email From Users u
  JOIN aspnet_Membership m
     ON u.email = m.email
)

selectステートメントをDELETEに変更できます

于 2012-11-09T23:27:32.540 に答える