gpt4 book ai didi

mysql - MySQL 中的子查询如果存在则检索最大日期 NULL 如果不存在

转载 作者:搜寻专家 更新时间:2023-10-30 23:39:12 25 4
gpt4 key购买 nike

我有一个包含 4 个表(指定模式)的数据库

  • 用户:用户 ID、用户名、电子邮件(用户 ID 主键)
  • USER_PERSONAL : Userid, username, email, mobile (userid primary key)
  • USER_HEALTH:用户 ID、用户名、电子邮件、问题(用户 ID 主键)
  • SESSIONS : Sessionid, userid, session date (userid foreign key,sessionid primary key)

我想编写一个查询来检索数据库中每个用户的用户 ID、用户名、电子邮件、手机、最后一次 session 的日期。

如果数据库中没有 session 条目,则表示没有 session 或 NULL,但会打印其他详细信息。

我使用的查询:

select users.userid, users.username, users.email, mobile,
problems, name, date_added, session_date
from users,sessions,user_personal,user_health
where sessions.session_date=(select max(session_date)
from sessions
where users.userid=sessions.userid)
and sessions.userid=users.userid and users.userid=user_personal.userid
and users.userid=user_health.userid;

但这不会检索没有 session 详细信息的用户的其他详细信息。我该如何实现?

最佳答案

你可以用这个

select u.userid, u.username, u.email, up.mobile, uh.problems, s.max_session_date 
from users u
inner join user_personal up on u.userid = up.userid
inner join user_health uh on u.userid = uh.userid
left outer join (select userid, max(session_date) max_session_date
from sessions
group by userid
) s
on u.userid = s.userid;

你不应该使用 Old-style-join关于您的查询。

left outer join 让您在 max_session_date 获得 NULL(无 session ),即使用户从未有过 session 也是如此。

关于mysql - MySQL 中的子查询如果存在则检索最大日期 NULL 如果不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37238297/

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