1

我有一个查询,例如下面的那个。

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    |
+------+

我无法删除不同的。我应该提供更多的背景。表中的每个条目都有可能在其中包含具有重复名称的另一行。

我需要 distinct 的原因是因为我不希望名称“a”有 30 行。我只希望输入到查询中的每个条目都有一行。

4

4 回答 4

1

这个词DISTINCT是赠送的。只需删除它!

于 2013-07-14T05:49:00.277 回答
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小提琴

已编辑

将所有不同的行放在一个条件中,并添加您需要的任何其他重复行。

于 2013-07-14T06:08:41.370 回答
0
SELECT `name` FROM `mydb`
WHERE `name` IN ('a', 'b', 'b', 'c', 'd', 'd', 'e');
于 2013-07-14T05:50:44.347 回答
0

DISTINCT 关键字告诉 mysql 不显示任何重复的行。只需使用您的查询而不区分。

于 2013-07-14T06:15:28.493 回答