如何连接两个表并从一个表中排除另一个表中的所有项?

时间:2011-12-21 05:04:56

标签: sql-server asp-classic

我有一个maillist表,它包含所有用户名,这是主键。我有第二个表,Registry,其用户名为外键。我正在执行一个复选框表单,从SQL Server数据库中提取名称,我想从列表中排除已存在于我的Registry表中的名称。仅供参考,注册表用于跟踪已注册高尔夫活动的人员。 maillist表是所有高尔夫成员的主表。 以下代码不起作用。

SQL = "SELECT maillist.MAILID as maillist_mailid,maillist.L_NAME,maillist.F_NAME, "
          SQL=SQL &" registry.mailid as registry_mailid FROM maillist, registry "
          SQL=SQL &"WHERE maillist.mailid<>registry.mailid ORDER BY maillist.mailid, maillist.l_name"

谢谢,戴夫

2 个答案:

答案 0 :(得分:3)

试试这个(Sql Server 2005 +的版本):

SELECT MAILID
FROM maillist
EXCEPT
SELECT MAILID
FROM registry

或者这个(版本2000 +)

SELECT 
  maillist.MAILID as maillist_mailid,
  maillist.L_NAME,
  maillist.F_NAME
FROM maillist
WHERE MAILID NOT IN (SELECT MAILID FROM registry)

答案 1 :(得分:1)

试试这个

SELECT
                     A.MailID
                    ,A.L_Name   
                    ,A.F_Name
FROM                MailList A
LEFT OUTER JOIN     Registry B
ON                  A.MailID = B.MailID
WHERE               B.MailID IS NULL