MySQL获取最接近NOW()的行

时间:2010-05-10 17:42:22

标签: mysql

我有一个包含用户数据的表,例如姓名,地址等,另一个表有一段关于用户的文本。它们是分开的原因是因为我们需要记录所有旧数据。因此,如果用户更改其段落 - 仍应存储旧段落。有关数据的每一位都有一个关于MeID的主键。我想要做的是有一个连接,从其他表中提取其名称,地址等以及最新的aboutMe数据。

我不确定如何订购联接只能获取最新的关于我的数据。

有人可以帮忙吗?

5 个答案:

答案 0 :(得分:2)

假设您有一个包含dateEntered字段的列,您可以说

select col1, col2, col3 from aboutme order by dateEntered desc limit 1

这将为您提供最新的行。

答案 1 :(得分:1)

如果要连接两个表,子查询会使用旧段落要求表格,只提供最后一个,按日期排序(datestamp DESC)并根据您的用户ID进行匹配。最后,外部查询将整个事情限制为仅有问题的用户(@UserID)。

SELECT name, address, aboutme
FROM users
LEFT JOIN
    (SELECT aboutme FROM oldertable
    WHERE aboutMeID = users.id
    ORDER BY datestamp DESC
    LIMIT 1)
WHERE users.id = @UserID;

答案 2 :(得分:0)

您应该按更改日期对其进行排序并将其限制为一条记录(LIMIT 1)

答案 3 :(得分:0)

子选择变体:

select name, 
       address, 
      (select aboutme 
              from ABOUTTABLE 
              where USERDATA.userid = ABBOUTTABLE.userid order by datefield limit 1) 
 from USERDATA

答案 4 :(得分:0)

这是相当棘手的,可能会很慢,但它是通过依赖的子查询来完成的。

SELECT name, address, aboutme.text as aboutme
FROM users
LEFT JOIN aboutme ON aboutMeID = (SELECT aboutMeID FROM aboutme
                                  WHERE user_id = users.id
                                  ORDER BY datestamp DESC
                                  LIMIT 1)

不确定它是否比@JYelton解决方案更快,这是你必须自己测试的东西。