我有下表叫细节。
如果标志为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/