0

すべての記事(ビット)のステータスに応じて、ジョブのステータス(ビット)を更新する必要があります。

たとえば、私は次の記事を持っている仕事を持っています

A: status = 1001
B: status = 1011
C: status = 0010

ここで、ジョブのステータスを= A OR B OR C=1011にします。

すべての記事をループすることなく、MYSQLでこれを行う方法はありますか?

ありがとう!

4

1 に答える 1

1

多くの問題と同様に、これはドキュメントを読む簡単なケースです:MySQLビット関数

しかし、ここでいくつかのことをまっすぐにしましょう。これらの値はビットマスクを意図していますか?その場合(そして確かにそうです)、Bはに等しくA | C、これは少し奇妙です。通常、ビットマスクは次のように機能します...

A = 0001
B = 0010
C = 0100
...etc.

このようにして、値を組み合わせて、ビットマスクに複数のオプションを割り当てることができるため、ACA | C)の組み合わせはになります0101

ビットマスクの全体的な目的は、固定長の文字列で複数の値を表すことができるため、スペース効率が高いことです。欠点は、マトリックスを見ることに慣れていない限り、人間が読める形式の出力にはならないことです。

一方で、私はかなり離れている可能性があります。

BIT_ORただし、作業を進めるために、関数MySQL GROUP BY(Aggregate)Functionsを探していると思います。この関数は、ORのすべてのビットのビット単位を計算して返しますexpr

于 2013-01-29T16:37:55.343 に答える