一个SQL语句的问题_f
我有两个表
用户表 uid name
1 张三
2 李四
3 赵五
消息表 mid sortid msg
1 0 欢迎注册
2 0 网站公告
3 1 你是张三吗?
用户表就是用户表,消息表就像是网站公告一样,如果sortid=0,则表示针对所有用户发表公告,非0则是针对用户的id
我现在是想得到这样的查询结果
mid msg sort
1 欢迎注册 所有人
2 网站公告 所有人
3 你是张三吗 张三
我不会弄了,请大家帮帮我,谢谢~~
[解决办法]
select a.mid,a.msg,case when isnull(a.sortid,0)=0 then '所有人 ' else b.name end as sort
from 消息表 a
left join 用户表 b on a.sortid=b.uid
[解决办法]
create table 用户表(uid int,name varchar(10))
insert into 用户表
select 1, '张三 '
union all select 2, '李四 '
union all select 3, '赵五 '
create table 消息表(mid int,sortid int,msg varchar(255))
insert into 消息表
select 1,0, '欢迎注册 '
union all select 2,0, '网站公告 '
union all select 3,1, '你是张三吗? '
select a.mid,a.msg,case when isnull(a.sortid,0)=0 then '所有人 ' else b.name end as sort
from 消息表 a
left join 用户表 b on a.sortid=b.uid
/*
mid msg sort
----------- ------------------- ----------
1 欢迎注册 所有人
2 网站公告 所有人
3 你是张三吗? 张三
(所影响的行数为 3 行)
*/