Pat*_*cow 4 php mysql bitwise-operators
我试图使用MySQL按位运算我的查询,我有这个例子:
table1
id ptid
1 3
2 20
3 66
4 6
table2
id types
1 music
2 art
4 pictures
8 video
16 art2
32 actor
64 movies
128 ..
...
Run Code Online (Sandbox Code Playgroud)
现在,id = 3从table1'66',女巫意味着它有64 or movies和2 or art
但
不是他也有32 or actor两次而且2 or art??
希望你看到我的困惑在哪里.我如何控制我想要的结果.在这种情况下,我想要64 or movies和2 or art.
但有时我要三id's从table2属于一个id从table1
有任何想法吗?
谢谢
Mar*_*ams 11
使用按位OR
以下查询返回表2中的所有项66:
SELECT *
FROM table2
WHERE id | 66 = 66
Run Code Online (Sandbox Code Playgroud)
但是32 + 32 = 64?
虽然32 + 32 = 64,但它并不影响我们.
这是二进制的64:
01000000
Run Code Online (Sandbox Code Playgroud)
这是二进制的32:
00100000
Run Code Online (Sandbox Code Playgroud)
这里是二进制的2:
00000010
Run Code Online (Sandbox Code Playgroud)
这是我们在这种情况下使用的1的位置,而不是值.不会有两件事.每个标志都打开或关闭.
这是二进制的66.请注意,64和2已打开,而不是32:
01000010
Run Code Online (Sandbox Code Playgroud)
使用按位AND而不是OR
编写查询的另一种方法是使用按位AND,如下所示:
SELECT *
FROM table
WHERE id & 66 <> 0
Run Code Online (Sandbox Code Playgroud)
从0 = falseMySQL到它,可以进一步缩写如下:
SELECT *
FROM table
WHERE id & 66
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8591 次 |
| 最近记录: |