2013-11-04 32 views
0

這是一個巨大的問題,我必須在SQL中解決,但我不知道如何。 這是我的數據集:如何獲得一列沒有特定值的行

customer; publisher; qty 

這是一個數據樣本:

CustA; PublX; 10 
CustA; PublZ; 20 
CustA; PublF; 30 
CustB; PublX; 8 
CustC; PublD; 9 
CustD; PublX; 9 
CustD; MyPub; 18 
CustE; PublZ; 3 
CustE; MyPub; 8 

我需要做一個查詢,得到的只是客戶沒有「MyPubl」的發行人。 顯然,我不能這樣做:

SELECT * FROM myTable的地方出版社<>「MyPubl」

一種解決方案可以是我創建的客戶聚集在一排這樣的集表:

CustA; PublX PublZ PublF; 60 
CustB; PublX; 8 
etc... 

然後用INSTR檢查MyPub是否存在於第二個字段中...... 這個解決方案是我的工作..所以我問你如何在SQL中完成這項工作(在同一行中彙總「相同」客戶)?

任何其他建議(也許更優雅)?

感謝

+0

* *爲什麼不能這樣做'<>'/'='!? – h2ooooooo

+1

這將返回CustE,其中MyPub在一行中,另一個在另一箇中。 –

+0

@ColmPrunty啊!得到它了。 – h2ooooooo

回答

1

可以使用NOT IN有一個子查詢:

SELECT 
    customer, 
    publisher, 
    qty 
FROM 
    books 
WHERE 
    customer NOT IN (
     SELECT 
      DISTINCT customer 
     FROM 
      books 
     WHERE 
      publisher = 'MyPub' 
    ) 

SQL Fiddle Demo

將輸出:

CUSTOMER | PUBLISHER | QTY 
---------+-----------+----- 
CustA | PublZ  | 20 
CustA | PublF  | 30 
CustB | PublX  | 8 
CustC | PublD  | 9 
1

也許這樣的:

SELECT * FROM myTable 
WHERE customer NOT IN (SELECT customer FROM myTable WHERE Publisher = "MyPubl") 

或者,如果你只是想客戶

SELECT DISTINCT customer FROM myTable 
0

還是老斯庫爾...

SELECT DISTINCT x.customer 
      FROM my_table x 
      LEFT 
      JOIN my_table y 
      ON y.customer = x.customer 
      AND y.publisher = 'MyPub' 
      WHERE y.customer IS NULL; 
相關問題