mysql - SQL中表的第一个和第二个日期

标签 mysql sql database sequelpro

在 SQL 中,我试图从表中提取第一个和第二个日期。我正在使用下面的查询,它是根据我在这里阅读的关于同一主题的许多帖子制定的,即提取第二个日期等。但出于某种原因,它没有给我正确的答案,我不明白为什么。

该表名为 motif_segmentvalue,它有一个名为 EntryDate 的列,我有兴趣用它来提取日期。我为特定用户 5407 编写了一个小查询,以查看我是否获得了正确的结果。

 select sv2.UserId, sv2.EntryDate, min(sv2.EntryDate)
 from motif_segmentvalue sv2
 where sv2.EntryDate  > (select MIN(sv3.EntryDate) from motif_segmentvalue sv3)
 and sv2.UserId = "5407"

我得到的输出是:

 UserId   EntryDate             min(sv2.EntryDate)

  5407    2016-01-20 12:50:00   2016-01-20 12:50:00

根据我的数据,这是不正确的,“EntryDate”列应该有一个与 min(sv2.EntryDate) 不同的日期 - 它应该有第二个日期。但出于某种原因,它没有。我不明白我做错了什么。任何人都可以提供有关我可能做错了什么的提示吗?我是否错误地认为“EntryDate”是第二次约会?

我也尝试过许多其他用户,并且两列都给出了相同的日期。

谢谢

最佳答案

我想这会让你得到你想要的。

它有一个 2050-01-01 日期作为没有第二个日期时的备份

select sv2.UserId, min(sv2.EntryDate) as first
, min(if(sv2.EntryDate=mindate,'2050-01-01', sv2.EntryDate)) as second
from motif_segmentvalue sv2
join (
    select sv3.UserId, min(sv3.EntryDate) as mindate 
    FROM motif_segmentvalue sv3
    WHERE sv3.UserId = "5407"
) as temp ON temp.UserId = sv2.UserId
WHERE sv2.UserId = "5407"

更新: 这将获取第二个日期,而不是下一个日期时间。

select sv2.UserId, min(sv2.EntryDate) as first
, min(if(date(sv2.EntryDate)=mindate,'2050-01-01', sv2.EntryDate)) as second
from motif_segmentvalue sv2
join (
    select sv3.UserId, min(date(sv3.EntryDate)) as mindate 
    FROM motif_segmentvalue sv3
    WHERE sv3.UserId = "5407"
) as temp ON temp.UserId = sv2.UserId
WHERE sv2.UserId = "5407"

关于mysql - SQL中表的第一个和第二个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43004408/

相关文章:

mysql - 实体中的许多 EntityCollections 在 RIA 服务中引发 "implement IConvertible"异常

mysql - MySQL 中的二进制/字符串转换

sql - 几张小的相关表和一张大表哪个更有效?

mysql - SQL查询根据条件选择记录?

mysql - 选择名为 Titel 的列,其中 id 与另一个表相同

php - 在 PHP 中使用 PDO 绑定(bind)参数

mySQL to PostgreSQL concat first name and last name for name search (Ruby on Rails)

sql - 数据库设计,哪个表有外键

php - 如何从数据库中获取重复的条目,而不是一次?

mysql - 哪种数据库设计方法对于单个应用程序的多个客户端是正确的。