我有下表,名为 DETAILS。
- 如果 Flag 是 1 -->00000001//(第一个 LSB 设置在这里)
- if flag is 2 -->00000010//(此处设置第 2 个 LSB)
- if flag is 3 -->00000011//(1st,2nd LSB's are set here)
- if flag is 5 -->00000101//(1st,3rd LSB's are set here)
示例数据:
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 列的第 2 个 LSB 或第 6 个 LSB 或 IS_LAST=1,那么我想将 FLAG 与 64 (0100 0000) 进行或操作,并使用 UPDATE 查询将结果存储回同一个 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 - 我想用数字对一列进行 OR,并根据 Mysql 中的多个条件将其存储回相同的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38670973/