2011-05-10 86 views
2

我在MySQL 5.0上。SQL加入不喜歡

我基本上有一個列表項目表和一個列表標題表。對於每個標題,可以有60多個項目,都是文本。動態我試圖獲得標題返回,有人想要包括或排除的項目。我的查詢基本上是:

Select Distinct TitleID from Titles 
left join Items on Items.titleID = Titles.titleID 
Where Items.Name not like 'Item 2' 

有任何項目有名稱,如「項目2」,那麼我不想TitleID。然而,可能有59個與標題相關的其他名稱,所以這個查詢仍然返回每個可能的TitleID

我該如何寫,才能得到我要找的TitleID

回答

1
Select Distinct TitleID from Items 
Where TitleID not in (
Select TitleID from Items 
Where Name like 'Item 2') 

中有「項目2」沒有通配符了,所以它並沒有多大意義。

+0

是的,只是一個簡單的例子......儘管如此!謝謝。 –

0
SELECT t.TitleID 
    FROM Titles t 
    WHERE NOT EXISTS(SELECT NULL 
         FROM Items i 
         WHERE i.TitleID = t.TitleID 
          AND i.Name LIKE 'Item 2%') 
+0

謝謝喬!你的格式更好,但我也看到了菲利普方法的相似之處。 –

+0

@ Neil M.一定要測試兩種方法。我懷疑我的表現可能會更好(不存在與不存在)。 –