首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >行间数据库相互关系

行间数据库相互关系
EN

Stack Overflow用户
提问于 2015-09-02 10:35:04
回答 2查看 56关注 0票数 0

有一个项目表,其中有"article_id,title,year_published“字段。表中的数据:

代码语言:javascript
复制
------------------------------------
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行和更高版本的查询不会获得管理会话。

如何处理这种关系?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-02 10:52:10

您可以添加另一个类型为integer的字段“articletype”,并将“管理会话一”、“管理会话二”和“管理会话三”设置为相同的项目类型。

代码语言:javascript
复制
--------------------------------------------------
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将如下所示:

代码语言:javascript
复制
select title, count(*) as total from articles group by articletype  having total > 1;
票数 1
EN

Stack Overflow用户

发布于 2015-09-03 02:11:03

如果你知道这是一个数字,你可以删除标题的最后一部分。就像这样:

代码语言:javascript
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32350853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档