我在数据库中有一个表,我希望在某些条件下从中选择最新的行。
我做了一个fiddle来更好地解释我的需求。
正如您所看到的,我已经尝试创建一个查询来获取我想要的数据。但不幸的是,我不仅获得了最新的行,而且实际上每行都符合条件,但是日期。
我尝试用伪sql解释我想要的东西:
SELECT * FROM test WHERE date = Max(date) AND user = 'Timmy';
编辑:似乎并不完全清楚我想要的是什么。 'date'描述了配置文件的创建日期。所以我想获得'Timmy'的最新资料。
答案 0 :(得分:10)
如果要返回与其关联的最新日期的行,还可以使用子查询来获取结果:
select t1.description,
t1.date,
t1.profile,
t1.user,
Replace(t1.locations, ',', '|') locations
from test t1
inner join
(
select max(date) date, profile, user
from test
group by profile, user
) t2
on t1.user = t2.user
and t1.date = t2.date
and t1.profile = t2.profile
where t1.user = 'Timmy'
order by t1.profile
子查询将返回每个用户和个人资料的最大日期,然后将其连接回用户,个人资料和日期的表格,以返回每个用户的每个个人资料的最新行(或者,就像这里一样,特定用户的每个配置文件。)
答案 1 :(得分:3)
SELECT description,
date,
profile,
user,
Replace(locations, ',', '|') AS locations
FROM test AS t
WHERE date = (
SELECT date
FROM test AS tm
WHERE tm.user = t.user
ORDER BY date DESC
LIMIT 1
)
AND user = 'Timmy'
ORDER BY profile ; -- whatever