Introduction to MYSQL SET type field SQL operation knowledge

  • 2020-05-27 07:21:19
  • OfStack


<em>`mark` set('index','best','hot')</em>  

With less people, people who understand less, looking for a long time, finally gather together a set of knowledge
Look at the structure above, MYSQL is not stupid, would it save index? No, it's a number
The SET field USES the base 2 number 11 to correspond to the value that you set, like index, in the 0th place, so 2 to the zero is equal to 1

update from table SET mark=1  


update from table SET mark='index'  

The above two effects are one.
Then the problem comes, just like weaving a dream, if I want to add a popular article, but do not want to delete other logo in the do, or I want to delete a logo, I do not know what logo there was before.

Here is adding the logo

update from table SET mark=mark |1|2

Do not ask me why I use |, the above means to add index, best two signs, if only add hot signs, as |4 is ok

Below is the delete identity

update from table SET mark=mark &~4&~1  

Ok, so I said update first, let's say query

SELECT * FROM table WHERE FIND_IN_SET('hot',mark)  

This is the simplest query method. You can also use the base 2 number 4 at the location of hot to replace the query. The efficiency is 1
Or you could write it like this:

SELECT * FROM table WHERE mark & 1  


Related articles: