在子查询中使用Distinct

时间:2013-04-18 00:44:56

标签: mysql sql

如何根据1个不同的字段显示行的所有字段(即该字段不应重复)

假设有一个名为Office_Roles的表,其字段和数据如下所示

Name   Department   Designation

John   Marketing    Executive
John   Sales        Executive
John   PR           Executive

所以我希望最终结果显示一行中的所有字段,但只显示1个John(不同)

输出如 -

John Marketing(或销售)(或Pr)执行官

我在考虑像

这样的东西
select * from Office_Roles where name =(select distinct name from Office_Roles);

我们如何正确地做这样的事情?我还想做一个Order By并限制最终结果的每页结果数...

4 个答案:

答案 0 :(得分:0)

查询不能包含可变数量的列。您可以做的一件事是将值连接在一起:

select name, group_concat(Department) as departments,
       group_concat(Designation) as designations
from Office_Roles o
group by name

答案 1 :(得分:0)

您将获得3行,因为表中有3个匹配,您试图排除哪些行以及查询应该如何知道什么不显示?

答案 2 :(得分:0)

这不会完全按照您的要求输出,但看看它是否适合您。只是为了给你一个想法。

select name, group_concat(Department SEPARATOR ' or ') as departments,
       Designation
from Office_Roles  a
group by name,Designation

Yoy可以在这里使用SQL Fiddle Demo

答案 3 :(得分:-1)

我只想使用GROUP BY

SELECT * FROM Office_Roles GROUP BY name;

容易。