2013-02-21 53 views
0

我有一个数据库,可以保存调查中的数据,其中一个人可以调查一次或两次,但不会超过这个数据。我有一个专栏DATE,我想通过它来获得所有人的第一次调查(不是第二次)。编写特定的SQL查询

例如,EMAIL [email protected]的人在12月29日和30日对DATE进行了调查。与EMAIL [email protected]的人一样,对DATE第1日和第28日进行了调查。

我想同时获得两人首次调查记录。谢谢

+0

您使用的是哪个数据库?到目前为止,你有什么? – 2013-02-21 17:49:22

+1

请修改您的帖子以包含您的解决方案。谢谢。 – bernie 2013-02-21 17:49:41

+0

可能会很好地给出表格的模式。 – Kirby 2013-02-21 17:50:46

回答

0

没有模式,很难猜测你需要什么。但是,如果它与电子邮件的表一样简单和调查日期也可能是这样的:

select email, survey_date 
from myTable 
group by email 
order by survey_date asc 
+1

使用'MIN(survey_date)',否则它将为每个用户返回两个记录。 – 2013-02-21 17:59:34

+0

如果它是通过电子邮件分组的,是不是它只会为每个唯一的电子邮件地址返回一条记录? – 2013-02-22 02:15:18

+0

在列上使用'group by'时,需要为要选择的其余列提供集合函数(*,如'MIN' /'MAX' *)。 – 2013-02-22 08:38:58

0

您可以跨越表本身

select * from table t1 join table t2 
on t1.email = t2.email 
and t1.surveydate < t2.surveydate 

PS:您可以优化与查询子句“WITH”,如果你的数据库引擎支持它的话。只要每次发送的电子邮件只有2条记录,此查询就能正常工作