2015-10-13 80 views
0

我有一個select語句看起來像這樣:子查詢,得到的結果SQL

SELECT DISTINCT category_name 
FROM categories c JOIN products p 
    ON c.category_id = p.category_id 
ORDER BY category_name; 

這將返回:

+---------------+ 
| category_name | 
+---------------+ 
| Basses  | 
| Drums   | 
| Guitars  | 
+---------------+ 

我試圖使用子查詢得到同樣的結果,但我沒有得到完全一樣的東西。下面是我使用的代碼:

SELECT DISTINCT category_name FROM 
categories WHERE category_name IN(SELECT distinct 
category_name FROM products) ORDER BY category_name; 

當我運行這段代碼,我得到:

+---------------+ 
| category_name | 
+---------------+ 
| Basses  | 
| Brass   | 
| Drums   | 
| Guitars  | 
| Keyboards  | 
+---------------+ 

我在做什麼錯了,我不是得到相同的輸出?

+2

一個是比較類別名稱和其他類別ID。不同的查詢,所以它們產生不同的結果並不奇怪。爲什麼你會在兩個表中的ID和名稱是完全不同的問題。 –

+0

@GordonLinoff好的,我現在看到了錯誤。我將category_name更改爲category_id並獲得了正確的結果。謝謝你指出,戈登:) – joanne72205

回答

0

這是因爲你使用連接,如果你會使用外部連接這應該工作。 看一看:inner join