我有一个包含用户数据的表,例如姓名,地址等,另一个表有一段关于用户的文本。它们是分开的原因是因为我们需要记录所有旧数据。因此,如果用户更改其段落 - 仍应存储旧段落。有关数据的每一位都有一个关于MeID的主键。我想要做的是有一个连接,从其他表中提取其名称,地址等以及最新的aboutMe数据。
我不确定如何订购联接只能获取最新的关于我的数据。
有人可以帮忙吗?
答案 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解决方案更快,这是你必须自己测试的东西。