2013-10-02 42 views
0

嗨,我是想顯示所有飲料各製造商除了碳酸一個人的使用產生存在和子查詢,但它給了我一個空集,請幫我出如何使用子查詢存在?

mysql> 'select * from drink'; 
+----------------+------------+----------------+ 
| name   | type  | manf   | 
+----------------+------------+----------------+ 
| Coca-cola zero | carbonated | Coca-Cola  | 
| Mirinda  | carbonated | PepsiCo  | 
| Big Apple  | carbonated | Murree Brewery | 
| Big Lemon  | carbonated | Murree Brewery | 
| Big Orange  | carbonated | Murree Brewery | 
| Peach Malt  | malt  | Murree Brewery | 
| Lemon Malt  | malt  | Murree Brewery | 
| Apple Malt  | malt  | Murree Brewery | 
| New Coke  | carbonated | Coca-Cola  | 
| Diet Coke  | carbonated | Coca-Cola  | 
| Pepsi   | carbonated | PepsiCo  | 
| Fruita vitals | Juice  | Nestle   | 
| Twister  | Juice  | Shezan   | 
| Nescafe  | cofee  | Nestle   | 
| Cappuccino  | Cofee  | Gloria Jeans | 
| Caffe Latte | Cofee  | Gloria Jeans | 
| Flat White  | Cofee  | Gloria Jeans | 
+----------------+------------+----------------+ 
17 rows in set (0.00 sec) 

查詢我試過,但它不是給我結果

SELECT * FROM drink WHERE NOT EXISTS (SELECT * FROM drink WHERE drink.type = 'carbonated'); 
+0

你確定你解釋正確的問題? EXISTS將用於「顯示除了那些製造碳酸飲料的製造商以外的所有飲料」 – Barmar

回答

0

不確定你的目標。

如果是從所有的製造商選擇所有的飲料除碳酸飲料製造商這樣做。

Select 
    * 
From Drink d1 
Where Not Exists 
    ( Select * 
     From Drink d2 
     Where d2.Manf = d1.Manf 
      And d2.Type = 'carbonated'); 
    ) 

如果只是選擇所有未碳酸化的飲料,它會更簡單。

Select 
    * 
From Drink 
Where Type <>'carbonated' 
+0

你讀過評論歐根裏克的回答? – Barmar

+0

啊,剛纔。謝謝。 – asantaballa

1

這不是EXISTS的情況下 - 一個簡單的

SELECT * FROM drink WHERE `type`<>'carbonated' 

會做。

如果這不是你所追求的,你需要更新你的問題以得到更具體的。

+0

我已經完成了這項工作,但是我的老師的問題要求是使用存在和子查詢來完成,所以請幫助我! 查詢1:顯示每個製造商生產的除碳酸飲料之外的所有飲料。 查詢2:使用Exists操作符並使用子查詢編寫上述查詢。 你的答案是query1,我已經做了它自己..got卡在query2 –

0

Eugen說的是正確的,使用EXISTS是瘋狂的,並且一般都是錯的。但如果你真的想使它工作,它可能是這樣的:

SELECT * FROM drink A WHERE NOT EXISTS (
    SELECT * FROM drink B WHERE A.name = B.name AND A.manf = B.manf AND B.type = 'carbonated' 
); 

(我只給這個答案,因爲我被要求在我的研究生類似愚蠢的查詢remeber數據庫當然會在關係代數的時候,所以我認爲我有想法,爲什麼你問這個。)

+0

感謝gbtimmon它的工作!我知道那是但我老師的要求是:( –

0

如果簡單的查詢做同樣的事情

SELECT * FROM drink WHERE `type` <> 'carbonated' 

子查詢會減慢你的系統不使用子查詢,也沒有這樣做的必要的子查詢。這些技術可提高您的應用程序速想想未來,如果你有一萬五千條記錄子查詢會減慢你的應用程序。