MYSQL 字符分割查询,请大家帮忙!! (有见表代码)

pressman 2008-04-25 09:35:19
我想查出xgroup表中某一个TEAM_id所对应的所有用户以及管理员,
结果以
userid,isManager 2个字段来表示
如:
当TEAM_id=4时
userid,isManager
8 1
9 0
14 0

#建表测试代码
DROP TABLE IF EXISTS `xuser`;
CREATE TABLE `xuser` (
`id` int(11) NOT NULL default '0',
`userid` varchar(20) NOT NULL default '',
`team_id` varchar(1024) NOT NULL default ''
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

INSERT INTO `xuser` (`id`,`userid`,`team_id`) VALUES (1,'zsm','1;2;');
INSERT INTO `xuser` (`id`,`userid`,`team_id`) VALUES (2,'laoyang','1;2;');
INSERT INTO `xuser` (`id`,`userid`,`team_id`) VALUES (3,'sh','1;2;');
INSERT INTO `xuser` (`id`,`userid`,`team_id`) VALUES (4,'xxy','1;2;3;');
INSERT INTO `xuser` (`id`,`userid`,`team_id`) VALUES (5,'cc','1;2;');
INSERT INTO `xuser` (`id`,`userid`,`team_id`) VALUES (6,'ym','1;2;');
INSERT INTO `xuser` (`id`,`userid`,`team_id`) VALUES (7,'yugys','1;2;3;');
INSERT INTO `xuser` (`id`,`userid`,`team_id`) VALUES (8,'admin','4;2;3;');
INSERT INTO `xuser` (`id`,`userid`,`team_id`) VALUES (9,'test1','4;');
INSERT INTO `xuser` (`id`,`userid`,`team_id`) VALUES (10,'test2','2;3;');
INSERT INTO `xuser` (`id`,`userid`,`team_id`) VALUES (11,'43243','3;');
INSERT INTO `xuser` (`id`,`userid`,`team_id`) VALUES (12,'1377449','2;');
INSERT INTO `xuser` (`id`,`userid`,`team_id`) VALUES (13,'1555555','2;');
INSERT INTO `xuser` (`id`,`userid`,`team_id`) VALUES (14,'1375','4;');

DROP TABLE IF EXISTS `xgroup`;
CREATE TABLE `xgroup` (
`TEAM_id` int(11) NOT NULL default '0',
`team_manager` varchar(50) character set utf8 default NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk;


INSERT INTO `xgroup` (`TEAM_id`,`team_manager`) VALUES (1,'4;7;1;3;');
INSERT INTO `xgroup` (`TEAM_id`,`team_manager`) VALUES (2,'1;2;10;12;');
INSERT INTO `xgroup` (`TEAM_id`,`team_manager`) VALUES (3,'4;');
INSERT INTO `xgroup` (`TEAM_id`,`team_manager`) VALUES (4,'8;');
INSERT INTO `xgroup` (`TEAM_id`,`team_manager`) VALUES (5,'8;');
...全文
147 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pressman 2008-04-25
  • 打赏
  • 举报
回复
to wwwwb:
怎么直接写死userid='admin'了呀???这样不行的

to liuyann:
非常感谢,结贴给你!
wwwwb 2008-04-25
  • 打赏
  • 举报
回复
OR
select id,
if(userid='admin',1,0) as isManager
from xuser where INSTR(TEAM_id,'4;')>0
yifuzhiming 2008-04-25
  • 打赏
  • 举报
回复
学习啊
liuyann 2008-04-25
  • 打赏
  • 举报
回复

select id as userid, sign(instr(g.team_manager,u.id)) as isManager
from xuser as u,
(select team_manager
from xgroup
where TEAM_id=4) as g
where instr(team_id,'4;')>0)

==== ====
wwwwb 2008-04-25
  • 打赏
  • 举报
回复
select id,
if(userid='admin',1,0) as isManager
from xuser where LOCATE('4;',TEAM_id)>0
pressman 2008-04-25
  • 打赏
  • 举报
回复
#查询群4中所有用户
select u.id,0 as isManager from xuser u where LOCATE('4;',TEAM_id)<>0
#查询群4中管理员
select u.id,1 as isManager FROM xuser u where (select FIND_IN_SET(u.id,REPLACE(t.team_manager,';',','))
from xgroup t where t.team_id='4')

56,677

社区成员

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

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