我有下表叫细节。
如果标志为1-->00000001//(此处设置第一个LSB)
如果标志为2-->00000010//(此处设置第二个LSB)
如果标志为3-->00000011//(此处设置第一、第二LSB)
如果标志为5-->00000101//(此处设置第一、三个LSB)
样本数据:

ID NAME     FLAG(int)         IS_LAST
--------------------------------------
1  sports   5  (0000 0101)       0     //1st,3rd LSB's are set
2  News     11 (0000 1011)       0     //1,2,4 MSB's are set
3  Weather  24 (0001 1000)       1     //4,5 MSB's are set
4  IPL      32 (0010 0000)       0     //6th MSB is set

如果FLAG列的第二个LSB或第六个LSB或是_LAST=1,那么我想使用64(0100 0000)或该标志,并使用UPDATE query将结果存储回同一个FLAG列。
我想要这样的输出:
ID NAME     FLAG(int)                     IS_LAST
-------------------------------------------------
1  sports   5  (0000 0101)(Not updated)       0
2  News     75 (0100 1011)(updated)           0
3  Weather  88 (0101 1000)(updated)           1
4  IPL      96 (0110 0000)(updated)           0

最佳答案

我的SQL有一个按位or运算符-|,所以这只是一个简单的update语句:

UPDATE details
SET    flag = flag | 64
WHERE  (flag | 2 > 0) OR
       (flag | 32 > 0) OR
       (is_last = 1)

关于mysql - 我想使用数字对一列进行“或”运算,然后根据Mysql中的多个条件将其存储回同一列中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38670973/

10-12 14:38