How to store multiple values in single column where use less memory?

后端 未结 4 1477
滥情空心
滥情空心 2021-01-02 21:40

I have a table of users where 1 column stores user\'s \"roles\". We can assign multiple roles to particular user.

Then I want to store role IDs in

4条回答
  •  长发绾君心
    2021-01-02 22:22

    You can also use bitwise logic with MySQL. role_id must be in BASE 2 (0, 1, 2, 4, 8, 16, 32...)

    role_id | label
    --------+-----------------
          1 | Admin
          2 | User
          4 | Author
    
    user_id | name  | role
    --------+-----------------
          1 | John  | 1
          2 | Steve | 3
          3 | Jack  | 6
    

    Bitwise logic allows you to select all user roles

    SELECT * FROM users WHERE role & 1
    -- returns all Admin users
    
    SELECT * FROM users WHERE role & 5
    -- returns all users who are admin or Author because 5 = 1 + 4
    
    SELECT * FROM users WHERE role & 6
    -- returns all users who are User or Author because 6 = 2 + 4
    

提交回复
热议问题