gpt4 book ai didi

mysql - 即使一行为 NULL 也获取数据

转载 作者:行者123 更新时间:2023-11-29 05:51:28 25 4
gpt4 key购买 nike

我有这个查询从 users 表中获取用户,还从 logs 表中获取最新的 time(时间戳),其中条目是“login_ok”。这是为了显示用户列表和他们上次登录的时间。

SELECT u.`id`, u.`email`, u.`firstname`, u.`lastname`, u.`type`, u.`creation_date`, MAX(l.`time`) as `last_login`
FROM `users` AS u
JOIN `logs` AS l ON u.id = l.user_id
WHERE l.`action` = 'login_ok'
AND `visible` = 1
GROUP BY u.`id`
ORDER BY u.`id` ASC

我的问题是:如果用户从未登录过,则该用户不存在“login_ok”条目,因此查询无法获取该用户数据。

即使 logs 上的 l.time 不存在,有没有办法获取所有用户数据?我尝试使用 JOINname_admin_users_logAS l ON (l.timeIS NOT NULL AND u.id = l.user_id) 但仍然没有显示没有登录日志的新用户。

最佳答案

使用 LEFT JOIN 而不是常规 JOIN(实际上意味着 INNER JOIN),并在 action 上移动过滤器= 'login_ok'LEFT JOIN 子句。

注意:根据您的查询,我们无法判断 visible 列来自哪个表,因此我假设它与 users...

SELECT
u.id,
u.email,
u.firstname,
u.lastname,
u.type,
u.creation_date,
MAX(l.time) as last_login
FROM users AS u
LEFT JOIN logs AS l
ON u.id = l.user_id and l.action = 'login_ok'
WHERE u.visible = 1
GROUP BY u.id
ORDER BY u.id ASC

关于mysql - 即使一行为 NULL 也获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53547660/

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