2013-07-14 42 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不显示任何重复的行。只需使用您的查询而不用明确。