<legend id='x9DK8'><style id='x9DK8'><dir id='x9DK8'><q id='x9DK8'></q></dir></style></legend>
      <i id='x9DK8'><tr id='x9DK8'><dt id='x9DK8'><q id='x9DK8'><span id='x9DK8'><b id='x9DK8'><form id='x9DK8'><ins id='x9DK8'></ins><ul id='x9DK8'></ul><sub id='x9DK8'></sub></form><legend id='x9DK8'></legend><bdo id='x9DK8'><pre id='x9DK8'><center id='x9DK8'></center></pre></bdo></b><th id='x9DK8'></th></span></q></dt></tr></i><div id='x9DK8'><tfoot id='x9DK8'></tfoot><dl id='x9DK8'><fieldset id='x9DK8'></fieldset></dl></div>

        • <bdo id='x9DK8'></bdo><ul id='x9DK8'></ul>

        <tfoot id='x9DK8'></tfoot>
      1. <small id='x9DK8'></small><noframes id='x9DK8'>

        是否可以执行按位分组功能?

        时间:2024-04-16

            • <legend id='u82uQ'><style id='u82uQ'><dir id='u82uQ'><q id='u82uQ'></q></dir></style></legend>

            • <i id='u82uQ'><tr id='u82uQ'><dt id='u82uQ'><q id='u82uQ'><span id='u82uQ'><b id='u82uQ'><form id='u82uQ'><ins id='u82uQ'></ins><ul id='u82uQ'></ul><sub id='u82uQ'></sub></form><legend id='u82uQ'></legend><bdo id='u82uQ'><pre id='u82uQ'><center id='u82uQ'></center></pre></bdo></b><th id='u82uQ'></th></span></q></dt></tr></i><div id='u82uQ'><tfoot id='u82uQ'></tfoot><dl id='u82uQ'><fieldset id='u82uQ'></fieldset></dl></div>

                <bdo id='u82uQ'></bdo><ul id='u82uQ'></ul>

                <small id='u82uQ'></small><noframes id='u82uQ'>

                <tfoot id='u82uQ'></tfoot>
                  <tbody id='u82uQ'></tbody>

                  本文介绍了是否可以执行按位分组功能?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我在包含按位标志的表中有一个字段.例如,假设有三个标志: 4 =>阅读,2 =>写,1 =>执行,表格看起来像这样*:

                  I have a field in a table which contains bitwise flags. Let's say for the sake of example there are three flags: 4 => read, 2 => write, 1 => execute and the table looks like this*:

                    user_id  |  file  |  permissions
                  -----------+--------+---------------
                          1  |  a.txt |  6    ( <-- 6 = 4 + 2 = read + write)
                          1  |  b.txt |  4    ( <-- 4 = 4 = read)
                          2  |  a.txt |  4
                          2  |  c.exe |  1    ( <-- 1 = execute)
                  

                  我有兴趣找到在任何记录上设置特定标志(例如:写入)的所有用户.为了在一个查询中执行此操作,我认为如果您将所有用户的权限组合在一起,您将获得一个值,即他们权限的总和":

                  I'm interested to find all users who have a particular flag set (eg: write) on ANY record. To do this in one query, I figured that if you OR'd all the user's permissions together you'd get a single value which is the "sum total" of their permissions:

                    user_id  |  all_perms
                  -----------+-------------
                          1  |  6        (<-- 6 | 4 = 6)
                          2  |  5        (<-- 4 | 1 = 5)
                  

                  *我的实际表格与文件或文件权限无关,只是一个例子

                  有没有一种方法可以在一个语句中执行此操作?在我看来,它与带有 GROUP BY 的普通聚合函数非常相似:

                  Is there a way I could perform this in one statement? The way I see it, it's very similar to a normal aggregate function with GROUP BY:

                  SELECT user_id, SUM(permissions) as all_perms
                  FROM permissions
                  GROUP BY user_id
                  

                  ...但很明显,一些神奇的按位或"函数而不是 SUM.有谁知道类似的吗?

                  ...but obviously, some magical "bitwise-or" function instead of SUM. Anyone know of anything like that?

                  (对于奖励积分,它在 oracle 中有效吗?)

                  (And for bonus points, does it work in oracle?)

                  推荐答案

                  MySQL:

                  SELECT user_id, BIT_OR(permissions) as all_perms
                  FROM permissions
                  GROUP BY user_id
                  

                  这篇关于是否可以执行按位分组功能?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:当 Distinct 和 Group By 的表现不同时? 下一篇:mysql 分组并排序每个组

                  相关文章

                  <i id='VutxP'><tr id='VutxP'><dt id='VutxP'><q id='VutxP'><span id='VutxP'><b id='VutxP'><form id='VutxP'><ins id='VutxP'></ins><ul id='VutxP'></ul><sub id='VutxP'></sub></form><legend id='VutxP'></legend><bdo id='VutxP'><pre id='VutxP'><center id='VutxP'></center></pre></bdo></b><th id='VutxP'></th></span></q></dt></tr></i><div id='VutxP'><tfoot id='VutxP'></tfoot><dl id='VutxP'><fieldset id='VutxP'></fieldset></dl></div>
                    <bdo id='VutxP'></bdo><ul id='VutxP'></ul>

                    1. <legend id='VutxP'><style id='VutxP'><dir id='VutxP'><q id='VutxP'></q></dir></style></legend>

                      <small id='VutxP'></small><noframes id='VutxP'>

                    2. <tfoot id='VutxP'></tfoot>