2014-07-02 31 views
0

我只希望查看列'Stadt'(= City)不等於'Hauptstadt'(= Capital)的行。 我的表如下所示:MYSQL:SELECT DISTINCT只顯示唯一的行

+----------------------+-------------------+--------------------------+---------------+ 
| Name     | Stadt    | Land      | Hauptstadt | 
+----------------------+-------------------+--------------------------+---------------+ 
| Kunstmuseum   | Bern    | Schweiz     | Bern   | 
| Musée Picasso  | Paris    | Frankreich    | Paris   | 
| Museum Ludwig  | Köln    | Deutschland    | Berlin  | 
| Museum of Modern Art | New York   | United States of America | Washington DC | 
| Städel    | Frankfurt am Main | Deutschland    | Berlin  | 
+----------------------+-------------------+--------------------------+---------------+ 

我只是想看看(期望輸出):

+----------------------+-------------------+--------------------------+---------------+ 
| Name     | Stadt    | Land      | Hauptstadt | 
+----------------------+-------------------+--------------------------+---------------+ 
| Museum Ludwig  | Köln    | Deutschland    | Berlin  | 
| Museum of Modern Art | New York   | United States of America | Washington DC | 
| Städel    | Frankfurt am Main | Deutschland    | Berlin  | 
+----------------------+-------------------+--------------------------+---------------+ 

我試了一下這個:

SELECT DISTINCT Name, Stadt, Land ,Hauptstadt 
FROM Museum 
GROUP BY 'Name', 'Stadt', 'Land', 'Hauptstadt' 
ORDER BY Name; 

輸出:

+----------------------+----------+--------------------------+---------------+ 
| Name     | Stadt | Land      | Hauptstadt | 
+----------------------+----------+--------------------------+---------------+ 
| Museum of Modern Art | New York | United States of America | Washington DC | 
+----------------------+----------+--------------------------+---------------+ 

我的SELECT應該如何得到我想要的輸出?

感謝您的幫助!

+2

爲什麼你需要'DISTINCT'只是比較兩列?你的要求聽起來像'Stadt <> Hauptstadt' ... –

+0

只是你知道未來; DISTINCT是一個函數,所以如果你使用它,語法應該是DISTINCT(some_col)。根據你的標準,你應該接受Gordon的答案。 – user3741598

+1

'DISTINCT'不是**函數,根據[規範](http://dev.mysql.com/doc/refman/5.1/en/select.html),沒有括號:'SELECT [ALL | DISTINCT | DISTINCTROW] ...'。您可以使用圓括號,但是「DISTINCT」仍然會影響所有選定的列,因此會造成混淆。 –

回答

1

group by中的單引號搞砸了你。首先,只對字符串和日期常量使用單引號。其次,你幾乎從不需要group byselect distinct。第三,你需要一個where條款來滿足你的條件。所以,試試這個:

SELECT DISTINCT Name, Stadt, Land ,Hauptstadt 
FROM Museum 
WHERE Stadt <> Hauptstadt 
ORDER BY Name; 
+0

我懷疑這裏的DISTINCT並非真正需要 - OP對DISTINCT的功能感到困惑,並且示例數據中沒有證據,並且需要DISTINCTION的結果。 – mc110

+0

@戈登這很好用!感謝您證明它與DISTINCT一起工作。 – BlueFox

+0

正如@ mc100指出的那樣,如果沒有'distinct',你的查詢可能沒問題。 'select distinct'會減慢查詢速度,因爲引擎必須刪除重複項。 –

0

我們需要把它按名稱,如果是等於或不

SELECT * FROM Museum WHERE Stadt != Hauptstadt GROUP BY Name; 
+1

謝謝!我不知道它像這樣簡單。 – BlueFox

+0

@BlueFox是啊:) – wrecklez