从一开始就规范化您的数据。从长远来看,这将带来巨大的回报。这样您就可以正常维护和查询您的数据。
简化形式的建议架构可能如下所示
CREATE TABLE users
(
`user_id` int not null auto_increment primary key,
`user_name` varchar(5)
);
CREATE TABLE teams
(
`team_id` int not null auto_increment primary key,
`team_name` varchar(5)
);
CREATE TABLE team_users
(
`team_id` int,
`user_id` int,
primary key (team_id, user_id),
foreign key (team_id) references teams (team_id),
foreign key (user_id) references users (user_id)
);
如果您需要为名为“team2”的团队拉取所有成员
SELECT t.team_id, t.team_name, u.user_id, u.user_name
FROM team_users tu JOIN teams t
ON tu.team_id = t.team_id JOIN users u
ON tu.user_id = u.user_id
WHERE t.team_name = 'team2'
如果您需要获取具有user_id = 2 的用户是成员的团队的所有成员
SELECT t.team_id, t.team_name, u.user_id, u.user_name
FROM team_users tu JOIN team_users tu2
ON tu.team_id = tu2.team_id JOIN teams t
ON tu.team_id = t.team_id JOIN users u
ON tu.user_id = u.user_id
WHERE tu2.user_id = 2
样本输出:
|团队ID | TEAM_NAME | USER_ID |用户名 |
|---------|-----------|---------|-----------|
| 2 |团队2 | 2 |用户2 |
| 2 |团队2 | 4 |用户4 |
| 2 |团队2 | 5 |用户5 |
这里是SQLFiddle演示