假設我有以下兩個表:使用SQL LEFT JOIN和MAX()和MIN()函數
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 JOIN
而不是INNER JOIN
的原因。
'GROUP BY u.id'? – CollinD