gpt4 book ai didi

mysql - Group by 不能与 mysql 子句中的 where 一起使用?

转载 作者:行者123 更新时间:2023-11-29 11:08:52 46 4
gpt4 key购买 nike

嗨,我有两个表,一个是 user,另一个是 user_details

用户表是

id    name  
---------
1 John
2 Tom
3 Amy
4 Kat

user_details 表是

id    user_id   money     created_on
------------------------------------
1 1 2000 2016-12-01
2 1 5000 2016-12-02
3 1 6000 2016-12-03
4 2 2050 2016-12-01
5 2 5020 2016-12-02
6 3 6000 2016-12-04

我需要像

这样的结果
name   user_id   money     created_on
------------------------------------
John 1 6000 2016-12-03
Tom 2 5020 2016-12-02
Amy 3 6000 2016-12-03
Kat 4 NULL NULL

我的问题是我需要记录 user_details 表中最近创建的数据,为此我编写了以下查询,但我得到了所有结果,任何人都可以告诉我查询中出了什么问题

SELECT * FROM `user` as `u` LEFT JOIN ( SELECT   user_id,money,created_on      FROM `user_details` WHERE created_on IN  (SELECT MAX(created_on) FROM    user_details group by user_id )) `userdata` ON `u`.`id` =  `userdata`.`user_id`;

最佳答案

在内部子查询中,您只需按 user_id 进行分组,但不按当前在其他查询中选择的用户的 user_id 进行过滤。

换句话说:您甚至不需要按 user_id 进行分组,只需在外部子查询中使用别名来选择给定用户的 MAX(created_on) 即可,如下所示:

SELECT * FROM `user` as `u` LEFT JOIN 
( SELECT user_id,money,created_on FROM `user_details` x WHERE created_on IN
(SELECT MAX(created_on) FROM user_details
WHERE x.user_id = user_details.user_id))
`userdata` ON `u`.`id` = `userdata`.`user_id`;

关于mysql - Group by 不能与 mysql 子句中的 where 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40962042/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com