gpt4 book ai didi

mysql - 使用带有 MAX() 和 MIN() 函数的 SQL LEFT JOIN

转载 作者:行者123 更新时间:2023-11-29 05:15:54 26 4
gpt4 key购买 nike

假设我有以下两个表:

CREATE TABLE users (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM;

CREATE TABLE logins (
user_id NOT NULL,
day DATE NOT NULL,
PRIMARY KEY (`user_id, `day`)
) ENGINE=MyISAM;

我在这里尝试做的是获取所有用户的查询,包括他们登录的第一天和最后一天。我为实现此目的而执行的查询如下所示:

SELECT u.id AS id, u.name AS name, MIN(l.day) AS first_login, 
MAX(l.day) AS last_login
FROM users u
LEFT JOIN logins l ON u.id = l.user_id

问题是,由于使用了 MIN()MAX(),我在整个结果中只收到了一行。我确定是我对这些功能的使用导致了这种情况。我应该每个用户一行,即使他们没有任何登录条目。这就是我使用 LEFT JOININNER JOIN 的原因。

最佳答案

为了使用聚合函数(最小值、最大值、...),您需要分组。尝试这样的事情:

SELECT u.id AS id, u.name AS name, MIN(l.day) AS first_login, MAX(l.day) AS last_login
FROM users u
LEFT JOIN logins l ON u.id = l.user_id
GROUP BY u.id

关于mysql - 使用带有 MAX() 和 MIN() 函数的 SQL LEFT JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32981048/

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