所以我有三個表:Select語句,每個字段包含多個值
廠商 風格 vendor_styles
一個供應商可以有很多風格。因此,對於給定的供應商ID,vendor_styles中可以有多行。
我想要做的是給一個供應商,我想找到所有的供應商,與樣式沒有任何重疊。因此,如果我擁有的供應商是攝影師和攝影師,我想找到所有不是攝影師而不是攝影師的供應商。現在發生的情況是,在這種情況下,如果供應商是供應商,攝影師和dj,那麼它將得到回報,因爲它與第一個供應商比較時有一種不存在的風格。但是我想確定是否有任何樣式是相同的,它不會被返回。
我跑的select語句是:
select *
from vendors, vendor_styles
where vendors.id = vendor_styles.vendor_id
and vendor_styles.style_id not in
(select style_id from vendor_styles where vendor_id = <vendor_id>);
的問題是,它基本上可以歸結爲
(23,25) not in (22, 23, 25)
因爲22是不是在前者的情況是真實的。我試圖得到的是,如果第一組值中的任何值都在第二組值中,則條件爲假。
也許使用INTERSECT或EXCEPT和計數(你正在尋找交叉點是零元素)[EXCEPT和INTERSECT(Transact-SQL)](http://technet.microsoft.com/en-us/library /ms188055.aspx) – Anssssss