如何在另一个子查询中编写子查询?

时间:2014-05-18 12:23:35

标签: mysql sql subquery

如何为以下内容编写查询:对于在1/1/2007和1/1/2008期间至少有2个样本的每个珊瑚,列出珊瑚名称和样本数量。

我认为它需要一个子查询,但我尝试过其他方式,但它对我没用。是否有些人能够将其拼写出来'对我而言,我可以理解实际发生的事情并尝试对此进行类似的查询。

TABLES

REEF [reefname,纬度,经度,2006_bleachedarea,summer_maximum_monthly_mean_temperature] 关键词:reefname

REEFTEMP [reefname,dateofreading,temperaturereading] 关键词:reefname,dateofreading

珊瑚[珊瑚码,珊瑚名,热门限] 关键:珊瑚码

CORALSAMPLING [sampleno,coralcode,reefname,dateofsampling,bleachpercent] 密钥:sampleno


这是我到目前为止所拥有的。我怀疑它是否正确。

SELECT coralcode, sampleno
FROM coralbleach__coralsampling 
WHERE 
dateofsampling BETWEEN '2007/1/1' AND '2008/1/1'
GROUP BY sampleno

1 个答案:

答案 0 :(得分:0)

您应该可以进行简单的连接,例如;

SELECT coral.name, COUNT(coralsampling.sampleno) number_of_samples
FROM coral 
JOIN coralsampling 
  ON coral.coralcode = coralsampling.coralcode
 AND coralsampling.dateofsampling BETWEEN '2007/1/1' AND '2008/1/1'
GROUP BY coral.name
HAVING COUNT(coralsampling.sampleno) > 1

此查询将获取所有珊瑚,将它们与各自的样本和珊瑚名称分组(这意味着我们可以使用COUNT来计算每个珊瑚名称的样本行数) 然后,我们使用HAVING过滤掉所有不含2个或更多样本的珊瑚。

联接有点过于复杂,无法以简短的答案格式详细描述,但我强烈建议您阅读JOIN和GROUP BY,以便能够轻松地构建这样的查询。