2011-12-21 28 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

相關問題