所以我要将我的服务器迁移到新机器上。我在新机器上安装较新版本的mysql 5.7.13,而旧版本的mysql 5.5.13。并且有一个查询不像以前那样工作 使用与先前服务器相同的数据
select *
from
( select *
from user_config
where username like '%'
and updatetime <= '2500-01-01 00:00:00'
order
by updatetime desc
) x
group
by username;
mysql 5.5.13按我的意思工作,它加载每个用户的最新配置设置。但是5.7.13会加载每个用户的最旧配置设置
为什么会这样?
我试图运行子查询并且它可以正常工作但是当我结合上面的查询时它不起作用
示例数据
username|value|updatetime
a | 100|2014-01-01 00:00:00
b | 85|2014-06-01 00:00:00
a | 150|2016-05-01 00:00:00
c | 50|2016-06-01 00:00:00
c | 75|2016-06-23 00:00:00
我需要的结果是
a|150
b|85
c|75
答案 0 :(得分:2)
SELECT x.*
FROM my_table x
JOIN
( SELECT username
, MAX(updatetime) updatetime
FROM my_table
GROUP
BY username
) y
ON y.username = x.username
AND y.updatetime = x.updatetime;
答案 1 :(得分:0)
在子查询中使用order by和limit 1来获得所需的结果:
select * from user_config t1
Where updatetime=(select updatetime from user_config x where x.username=t1.username order by updatetime desc limit 1);