MySQLクエリでこれを行うための明確で簡単な方法がわかりません。スキーマは次のようになります。
CREATE TABLE users (
id VARCHAR(20),
col SET('read', 'write', 'edit', 'delete'),
);
read
そして、(他の値セットに関係なく)とprivsを持つすべてのユーザーに対してクエリを実行したい場合write
、行を取得するために思いついた唯一のクエリは次のとおりです。
SELECT id, privs
FROM users WHERE
FIND_IN_SET('read',privs) > 0 AND
FIND_IN_SET('write',privs) > 0
これを単純化する方法はありませんか?何かのようなもの:
SELECT id, privs
FROM users WHERE
privs('read' & 'write')
仮説としては、より洗練されたビット ロジックを使用したいのですが、SET
型を使用するときにこれを達成する唯一の方法が実際の例であるかどうかを知りたいです。