2013-07-14 35 views
1

我有一個查詢,如下面的一個。MySQL SELECT DISTINCT包含重複項

SELECT DISTINCT(`name`) FROM `mydb` 
WHERE `name` IN ('a', 'b', 'b', 'c', 'd', 'd', 'e'); 

我提供了上面的字母列表和查詢我的數據庫。

我想要的是讓它返回包括重複項的行(所以行的名稱爲'a',兩個'b'行,'c',兩個'd'行和'e')。

在此先感謝!

編輯:

電流輸出:

+------+ 
| name | 
+------+ 
| a | 
| b | 
| c | 
| d | 
| e | 
+------+ 

期望的輸出:

+------+ 
| name | 
+------+ 
| a | 
| b | 
| b | 
| c | 
| d | 
| d | 
| e | 
+------+ 

我不能刪除不同。我應該提供更多的背景。表格中的每個條目都有可能在其中具有重複名稱的另一行。

我需要不同的原因是因爲我不想要30行的名字'a'。我只想爲輸入到查詢中的每個條目添加一行。

+0

在您的問題中包含您的輸出。 –

+2

請勿使用「DISTINCT」。只是'SELECT name ...' – 2013-07-14 05:48:56

+0

我編輯了我的問題,解釋了爲什麼我無法從查詢中刪除DISTINCT。 –

回答

1

則可以使用union all這樣做:

select distinct name from t1 where name in ('a','c','e') 
Union all 
select distinct name from t1 where name in ('a') 
order by name; 

SQL Fiddle

EDITED

把所有的不同行togather在一個單一的條件,並添加任何其他重複你需要的行。

+0

這很好。我認爲這給了我想要的東西。有什麼辦法可以做到..更好嗎?我的例子顯然很簡單,但原因是它的方式是,所以我不必做10到50個查詢。我所查詢的幾乎所有「名稱」都是不同的。這是解決一個非常邊緣的情況下我。 –

+0

@MiloGertjejansen編輯答案。 – 7alhashmi

+0

正如您在開始文章中所看到的,'我只想爲輸入到查詢中的每個條目添加一行。 – FSou1

1

是字DISTINCT a放棄了。只要刪除它!

+0

我添加了一個編輯,爲什麼我不能刪除'DISTINCT'。 –

+1

好了解3NF - http://en.wikipedia.org/wiki/Third_normal_form –

0
SELECT `name` FROM `mydb` 
WHERE `name` IN ('a', 'b', 'b', 'c', 'd', 'd', 'e'); 
0

DISTINCT關鍵字告訴mysql不顯示任何重複的行。只需使用您的查詢而不用明確。