有一个项目表,其中有"article_id,title,year_published“字段。表中的数据:
------------------------------------
article_id | title | year_published
------------------------------------
1|Mechanical Code|2012
2|Mechanical Code|2015
3|Contruction Workshop|2010
4|Contruction Workshop|2012
5|Contruction Workshop|2013
6|Administrative Session I|2012
7|Administrative Session II|2014
8|Administrative Session III|2015我需要找出几年来存在的同一篇文章。
我已经查询了我的数据库,以获得结果,按标题分组,计数超过1。
按文章总数>1从文章组中选择标题,计数(*)为总计;
但问题是,标题名称可能会有所不同,并有同一篇文章的版本。查看第6-8行和更高版本的查询不会获得管理会话。
如何处理这种关系?
发布于 2015-09-02 10:52:10
您可以添加另一个类型为integer的字段“articletype”,并将“管理会话一”、“管理会话二”和“管理会话三”设置为相同的项目类型。
--------------------------------------------------
article_id | title | year_published| articletype
--------------------------------------------------
1|Mechanical Code|2012|1
2|Mechanical Code|2015|1
3|Contruction Workshop|2010|2
4|Contruction Workshop|2012|2
5|Contruction Workshop|2013|2
6|Administrative Session I|2012|3
7|Administrative Session II|2014|3
8|Administrative Session III|2015|3SQL将如下所示:
select title, count(*) as total from articles group by articletype having total > 1;发布于 2015-09-03 02:11:03
如果你知道这是一个数字,你可以删除标题的最后一部分。就像这样:
select (case when substring_index(title, ' ', -1) in ('I', 'II', 'III')
then left(title, length(title) - locate(' ', reverse(title)))
else title
end) as basetitle, count(*) as total
from articles
group basetitle
having count(*) > 1;https://stackoverflow.com/questions/32350853
复制相似问题