返回特定年份中符合特定条件的所有记录

时间:2019-01-31 16:47:57

标签: mysql

我在表格中有几行,其中有患者被病毒感染的日期以及她被治愈的日期。我在列中还有病毒ID(这是一个外键),并指向另一个表,该表存储了病毒的名称。 到目前为止,我想出了什么:

SELECT myColumns
FROM myTable
WHERE dateColumn BETWEEN '2018-01-01' AND '2018-12-31';

日期列的日期存储方式如下:

patient infected date
2002-01-22 13:25:41
patient healed date
2002-01-24 10:35:21

我想做的是,说出100种最常见的病毒,这些病毒在同年被感染并得到了治愈。

类似(按出现次数排序)

virus1 | name of the virus | number of occurrences 
virus2 | name of the virus | number of occurrences 

上面的查询应如何变成?

包含患者数据以及病毒ID的表:

Column  Type    Comment
dateInfected    datetime NULL    
dateHealed  datetime NULL    
idOfVirus   bigint(20) NULL 

具有病毒名称的表:

Column  Type    Comment
id  bigint(20)   
virusName   text NULL

1 个答案:

答案 0 :(得分:0)

您可以按病毒ID加入表,查找出现的次数,按次数排序并应用所需的限制(假设根据您的问题为100) 您可以使用

SELECT V.id as "Virus Id", V.virusName as "Virus Name", count(V.id) as "occurences"
FROM virus V,infect I 
WHERE V.id = I.idOfVirus
GROUP BY V.id, V.virusName
ORDER BY count(V.id) DESC
LIMIT 100