MySql多字段去重

5

我在我的表(MySQL数据库)中有4列a、b、c、d。我想选择表中这4列的所有不同值。更深入地说,我的表如下所示:

a   b   c   d
--------------------------
1   3   3   4
1   2   3   0
1   1   3   4
1   2   3   4
1   2   3   4
1   2   3   4
1   2   3   4

在上面的表格中(1,2,3,4),值重复了4次(看一下我的表格的最后4行)。我只想要不同的值,也就是说我想在mysql查询之后得到下面的表格。
a   b   c   d
---------------
1   3   3   4
1   2   3   0
1   1   3   4
1   2   3   4

我想你们已经有了一些想法。我不熟悉MySql。


1
你想要哪一个?请注意,在没有主键的情况下,“表”在关系型数据库中并不是真正的表。 - Strawberry
你尝试在列名前使用distinct关键字了吗? - Shell
4个回答

8
select distinct a,b,c,d from your_table

它运行良好。我还有一个需求,即我的表中有两个额外的字段(e和f)。我想获取相应的值。我该怎么做? - freakydev
只需添加select distinct a,b,c,d,e,f from your_table。 - Sulthan Allaudeen
我想避免让该字段成为唯一条件。如果我也添加了该字段,那么MySQL会检查该字段的唯一条件吗? - freakydev
是的,确实如此。但是如果您不希望那些其他字段是唯一的,您必须定义一个规则来确定要采取哪个,因为您不能全部采取,对吧?最好提出另一个问题,并添加您的示例数据和预期输出。 - juergen d

3
SELECT DISTINCT column_name,column_name FROM table_name;

I mean

select distinct a,b,c,d from table_name;

Here is the link of w3schools


0
使用: SELECT DISTINCT * FROM yourtable


0

试试这个:

SELECT DISTINCT a FROM my_table
UNION 
SELECT DISTINCT b FROM my_table
UNION
SELECT DISTINCT c FROM my_table
UNION
SELECT DISTINCT d FROM my_table

更新 1:

SELECT a,b,c,d 
FROM my_table 
GROUP BY a,b,c,d;

http://sqlfiddle.com/#!2/c49ad/11


1
这个查询的输出会是什么? - Shell
使用Group By时,使用Distinct关键字的好处是什么? - Shell
1
你有在 Fiddle 中检查过你的第一个查询结果吗? - Shell
@Nimesh,是的,我在询问你尝试这个,而不是说确切的一个... 你应该阅读所有的东西。 - jmail
1
@jmail OP已经提出了输出,而你的第一个查询结果与建议的输出不匹配。 - user3391751
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接