すべての記事(ビット)のステータスに応じて、ジョブのステータス(ビット)を更新する必要があります。
たとえば、私は次の記事を持っている仕事を持っています
A: status = 1001
B: status = 1011
C: status = 0010
ここで、ジョブのステータスを= A OR B OR C=1011にします。
すべての記事をループすることなく、MYSQLでこれを行う方法はありますか?
ありがとう!
すべての記事(ビット)のステータスに応じて、ジョブのステータス(ビット)を更新する必要があります。
たとえば、私は次の記事を持っている仕事を持っています
A: status = 1001
B: status = 1011
C: status = 0010
ここで、ジョブのステータスを= A OR B OR C=1011にします。
すべての記事をループすることなく、MYSQLでこれを行う方法はありますか?
ありがとう!
多くの問題と同様に、これはドキュメントを読む簡単なケースです:MySQLビット関数。
しかし、ここでいくつかのことをまっすぐにしましょう。これらの値はビットマスクを意図していますか?その場合(そして確かにそうです)、B
はに等しくA | C
、これは少し奇妙です。通常、ビットマスクは次のように機能します...
A = 0001
B = 0010
C = 0100
...etc.
このようにして、値を組み合わせて、ビットマスクに複数のオプションを割り当てることができるため、A
とC
(A | C
)の組み合わせはになります0101
。
ビットマスクの全体的な目的は、固定長の文字列で複数の値を表すことができるため、スペース効率が高いことです。欠点は、マトリックスを見ることに慣れていない限り、人間が読める形式の出力にはならないことです。
一方で、私はかなり離れている可能性があります。
BIT_OR
ただし、作業を進めるために、関数MySQL GROUP BY(Aggregate)Functionsを探していると思います。この関数は、OR
のすべてのビットのビット単位を計算して返しますexpr
。