我有一个数据库,可以保存调查中的数据,其中一个人可以调查一次或两次,但不会超过这个数据。我有一个专栏DATE
,我想通过它来获得所有人的第一次调查(不是第二次)。编写特定的SQL查询
例如,EMAIL [email protected]
的人在12月29日和30日对DATE
进行了调查。与EMAIL [email protected]
的人一样,对DATE
第1日和第28日进行了调查。
我想同时获得两人首次调查记录。谢谢
我有一个数据库,可以保存调查中的数据,其中一个人可以调查一次或两次,但不会超过这个数据。我有一个专栏DATE
,我想通过它来获得所有人的第一次调查(不是第二次)。编写特定的SQL查询
例如,EMAIL [email protected]
的人在12月29日和30日对DATE
进行了调查。与EMAIL [email protected]
的人一样,对DATE
第1日和第28日进行了调查。
我想同时获得两人首次调查记录。谢谢
没有模式,很难猜测你需要什么。但是,如果它与电子邮件的表一样简单和调查日期也可能是这样的:
select email, survey_date
from myTable
group by email
order by survey_date asc
使用'MIN(survey_date)',否则它将为每个用户返回两个记录。 – 2013-02-21 17:59:34
如果它是通过电子邮件分组的,是不是它只会为每个唯一的电子邮件地址返回一条记录? – 2013-02-22 02:15:18
在列上使用'group by'时,需要为要选择的其余列提供集合函数(*,如'MIN' /'MAX' *)。 – 2013-02-22 08:38:58
您可以跨越表本身
select * from table t1 join table t2
on t1.email = t2.email
and t1.surveydate < t2.surveydate
PS:您可以优化与查询子句“WITH”,如果你的数据库引擎支持它的话。只要每次发送的电子邮件只有2条记录,此查询就能正常工作
您使用的是哪个数据库?到目前为止,你有什么? – 2013-02-21 17:49:22
请修改您的帖子以包含您的解决方案。谢谢。 – bernie 2013-02-21 17:49:41
可能会很好地给出表格的模式。 – Kirby 2013-02-21 17:50:46