0

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

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

Name   Department   Designation

John   Marketing    Executive
John   Sales        Executive
John   PR           Executive

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

输出如 -

约翰营销(或销售)(或公关)执行官

我在想类似的东西

select * from Office_Roles where name =(select distinct name from Office_Roles);

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

4

4 回答 4

0

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

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

Yoy 可以在这里玩 SQL Fiddle Demo

于 2013-04-18T01:08:24.343 回答
0

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

select name, group_concat(Department) as departments,
       group_concat(Designation) as designations
from Office_Roles o
group by name
于 2013-04-18T00:48:47.723 回答
0

无论哪种方式,您都将获得 3 行,因为表中有 3 行匹配,您要排除哪些行以及查询应该如何知道不显示的内容?

于 2013-04-18T00:51:42.147 回答
-1

我只会使用 GROUP BY

SELECT * FROM Office_Roles GROUP BY name;

简单的。

于 2013-04-18T00:48:02.740 回答