有一个文章表,其中的字段为“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行以上的查询将不会获得管理会话。
如何处理这种关系?
答案 0 :(得分:1)
您可以添加其他字段' articletype'例如,类型为整数,并将管理会话I,管理会话II和管理会话III设置为相同的文章类型。
--------------------------------------------------
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|3
SQL就像这样:
select title, count(*) as total from articles group by articletype having total > 1;
答案 1 :(得分:0)
如果你知道它是一个数字,你可以删除标题的最后一部分。像这样:
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;