2011-12-21 87 views
0

我有一个maillist表,它具有所有用户名,这是主键。我有第二个表,注册表,其中有用户名作为外键。我正在做一个复选框形式从SQL Server数据库中拉名字,我想排除列表中已经在我的注册表中的名称。仅供参考,注册表表格用于跟踪已注册高尔夫活动的人员。 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" 

谢谢,戴夫

+0

什么版本的sql server? – 2011-12-21 05:07:42

回答

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

试试这个

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 
+1

我想 - 这是一个不好的例子 - 因为你不能确定注册表maillist有1:1的关系,因此 - 你可以获得很多重复 – 2011-12-21 12:47:43

+0

这个查询返回所有在maillist表中但不在注册表中的人。 – 2011-12-22 00:29:37

相关问题