Select中使用子查询返回多个字段的问题

starlihgt36 2010-09-15 02:31:48
是这样的,在数据库中有两张表,一个是用户表(user)[id, name,...], 一个是用户状态表(user_state)[id, userid, userstate, statedesc, updatetime]。现在我要查询用户列表,用户列表要包含用户名、用户状态、状态说明、状态更新时间这些个字段。在用户状态表中,一个用户可能有多个状态记录,但只有这个用户最后(也就是最近)的一条状态记录是有效的,并且在每一行中要返回的(其他已过期的状态不显示)。另外用户状态表中可能没有对应某一用户的状态信息,这时候要返回默认值为1。请教各位高手,怎样来写这个SQL语句呢?

我想到了用SELECT子句中用子查询,例如 SELECT (SELECT userstate FROM user_state WHERE userid = user.id ORDER BY updatetime desc limit 1) AS userstate, user.* FROM user 但是这样写只能返回userstate,不能一并返回statedesc和updatetime。
...全文
2924 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
WWWWA 2010-09-15
  • 打赏
  • 举报
回复
贴记录及要求结果出来看看
ACMAIN_CHM 2010-09-15
  • 打赏
  • 举报
回复
select *
from user a inner join user_state b on a.id=b.userid
where not exists (select 1 from user_state where userid=b.userid and updatetime>b.updatetime)
ACMAIN_CHM 2010-09-15
  • 打赏
  • 举报
回复
select *
from (
select *
from user,user_state
where user_state.userid = user.id
order by user.id,updatetime desc
) t
group by user.id
ACMAIN_CHM 2010-09-15
  • 打赏
  • 举报
回复
参考下贴中的多种方法 (N=1)

http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
[征集]分组取最大N条记录方法征集,及散分....

56,872

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧