如何根据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并限制最终结果的每页结果数...
答案 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;
容易。