我不知道如何去寻找这个,于是我开始了一个新的问题。
我有一张表,结构如下
----------------------------------------
| TALKS | PERSON
----------------------------------------
| Networks | John Doe
| Steganography | Alex
| Assembly | Mark
| Networks | Mark
| Steganography | John Doe
| Networks | Mark
----------------------------------------如何执行查询,以便
----------------------------------------
| TALKS | PERSON
----------------------------------------
| Networks | John Doe
| Steganography |
| Assembly | Mark
| Networks |
| Steganography | Alex
----------------------------------------请注意,“Mark”有两次关于“网络”的讨论,但它只需要返回一次。
发布于 2014-04-17 16:33:45
从桌子上选择不同的谈话
发布于 2014-04-17 17:05:18
这就是你想要达到的目标。
(
select talks,name
from table1
group by name
order by talks
)
UNION ALL
(
select distinct talks as talks,
case
when name is not null then ''
end
name
from table1
)演示
发布于 2014-04-17 17:05:21
在您的隐含规范中有两件事正在进行。一种是显示不同的对话,第二种是格式化结果集,以避免在连续的行中重复单个人的名称。
此查询(http://sqlfiddle.com/#!2/dc2d3/4/0)同时执行两项操作。
select talks,
if (@prev = person,'',@prev:=person) person
from (
select distinct talks, person
from talk
order by person, talks
) AS a,
(select @prev := '') AS init避免@变量猴子业务的替代查询(http://sqlfiddle.com/#!2/dc2d3/9/0)是
select group_concat(distinct talks order by talks) AS talks,
person
from talk
group by personhttps://stackoverflow.com/questions/23138658
复制相似问题