mysql - 获取同一表的逗号分隔字符串中所有 ID 的详细信息,MYSQL

标签 mysql

考虑表格,

id   username    co_manager    privilege
1    user_1      0             NULL
2    user_2      1             4,5
3    user_3      1             6
4    user_4      0             NULL
5    user_5      0             NULL
6    user_6      0             NULL

此处privilege 列是由co_manager 管理的用户ID。如果输入的用户 ID 为 2,那么我应该得到这样的输出,

id   username    co_manager    privilege
2    user_2      1             4,5
4    user_4      0             NULL
5    user_5      0             NULL

为此我使用了这样的查询,

select * from users WHERE id = 2 OR FIND_IN_SET(id,privilege);

但没有得到所需的输出。

我在这里尝试过示例 http://sqlfiddle.com/#!2/3c8c35

谢谢

最佳答案

首先,规范化数据库。新建表user_privilege,与users表建立外键关系。

但是,在当前情况下,您可以尝试以下查询。

select * from users WHERE id = 2 OR 
FIND_IN_SET(id,(select privilege from users where id = 2));

关于mysql - 获取同一表的逗号分隔字符串中所有 ID 的详细信息,MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22964224/

相关文章:

mysql - 如何从 Django 数据库显示 Mysql 中的所有现有记录?

mysql - 计算来自发件人的未读邮件

mysql - 是否可以在 MySQL 的 SELECT 语句中使用带有 * 的 IFNULL() ?如果没有,我的替代方案是什么?

mysql - 如何在 HQL 查询中检查 NULL 或无效

php - Codeigniter - 使用分页,仅显示数据库中的用户数据

Mysql插入触发器不起作用

用于变更检测的 MySQL 触发器

mysql - 在 case 的 then 子句中使用 select 语句

mysql - 优化sql请求统计

mysql - Union 之后的搜索查询