如何在mysql中连接字符串?

时间:2012-09-18 05:06:33

标签: mysql

我想要的是将静态字符串连接到数据集我想将字符串添加为min,avg,max到获取的数据。当我尝试给出一些错误时?

我的查询

select m.medTitle, 
min(TIMESTAMPDIFF(SECOND, s.dmtViewStart, s.dmtViewEnd)) playtime
from tbldoctormediatracktest s
left join tblmedia m on s.dmtMedId = m.medId
group by m.medTitle
union all
select m.medTitle, 
avg(TIMESTAMPDIFF(SECOND, s.dmtViewStart, s.dmtViewEnd)) playtime
from tbldoctormediatracktest s
left join tblmedia m on s.dmtMedId = m.medId
group by m.medTitle
union all
select m.medTitle, 
  max(TIMESTAMPDIFF(SECOND, s.dmtViewStart, s.dmtViewEnd)) playtime
from tbldoctormediatracktest s
left join tblmedia m
  on s.dmtMedId = m.medId
group by m.medTitle
order by medTitle,  playtime;

我在尝试什么。

select concat(m.medTitle,'minimum'), 
  min(TIMESTAMPDIFF(SECOND, s.dmtViewStart, s.dmtViewEnd)) playtime
from tbldoctormediatracktest s
left join tblmedia m
  on s.MedId = m.MedId
group by m.medTitle
union all

select concat(m.medTitle,'average'), 
  avg(TIMESTAMPDIFF(SECOND, s.dmtViewStart, s.dmtViewEnd)) playtime
from tbldoctormediatracktest s
left join tblmedia m
  on s.MedId = m.MedId
group by m.medTitle
union all

select concat(m.medTitle,'maximum'),  
  max(TIMESTAMPDIFF(SECOND, s.dmtViewStart, s.dmtViewEnd)) playtime
from tbldoctormediatracktest s
left join tblmedia m
  on s.MedId = m.MedId
group by m.medTitle
order by medTitle,  playtime

2 个答案:

答案 0 :(得分:2)

试试这个:

select playtime,type 
from(
select m.MedId, 
  min(TIMESTAMPDIFF(SECOND, s.dmtViewStart, s.dmtViewEnd)) playtime,
  concat(m.medTitle,' (minimum)') as type
from tbldoctormediatracktest s
left join tblmedia m
  on s.MedId = m.MedId
group by m.MedId
union all

select m.MedId, 
  avg(TIMESTAMPDIFF(SECOND, s.dmtViewStart, s.dmtViewEnd)) playtime,
  concat(m.medTitle,' (average)') as type
from tbldoctormediatracktest s
left join tblmedia m
  on s.MedId = m.MedId
group by m.MedId
union all

select m.MedId,  
  max(TIMESTAMPDIFF(SECOND, s.dmtViewStart, s.dmtViewEnd)) playtime,
  concat(m.medTitle,' (maximum)') as type 
from tbldoctormediatracktest s
left join tblmedia m
  on s.MedId = m.MedId
group by m.MedId)a
order by MedId,  playtime


SQL Fiddle domo 1

SQl Fiddle Demo 2

SQL Fiddle Demo 3

答案 1 :(得分:0)

select concat(m.medTitle, 'min') medTitle,
  min(TIMESTAMPDIFF(SECOND, s.dmtViewStart, s.dmtViewEnd)) playtime
from tbldoctormediatracktest s
left join tblmedia m
  on s.MedId = m.MedId
group by m.medTitle

union all

select concat(m.medTitle, 'avg') medTitle, 
  avg(TIMESTAMPDIFF(SECOND, s.dmtViewStart, s.dmtViewEnd)) playtime
from tbldoctormediatracktest s
left join tblmedia m
  on s.MedId = m.MedId
group by m.medTitle

union all

select m.medTitle || 'max' medTitle, 
  max(TIMESTAMPDIFF(SECOND, s.dmtViewStart, s.dmtViewEnd)) playtime
from tbldoctormediatracktest s
left join tblmedia m
  on s.MedId = m.MedId
group by m.medTitle
order by medTitle, playtime

从链接更新了您的查询。 我注意到你需要在连接后为m.medTitle提供别名。

concat(m.medTitle, 'min')m.medTitle || 'min'中的任何一个都可以用于连接。