質問は何か間違ったことに基づいているので、あなたの質問に対する正しい答えはありません。
テーブル構造が間違っています。これは「リレーショナル」ではなく、さらにテキストフィールドに数字があります。
これは非常に悪いデザインです。
1つのallowed_user_typeを削除したい場合はどうなりますか?複雑なコードが必要になります...
これに取り組むのをやめ、リレーショナルデータベースについて学び、プロジェクトに戻ることをお勧めします。
正しいデザインは次のようになります。
Table 1:
| id | allowed_user_type |
| 1 | 8 |
| 1 | 9 |
| 1 | 20 |
Table 2:
| id | user_type |
| 1 | 9 |
そして、次のようにクエリします。
SELECT [Table 2].id
FROM [Table 2], [Table 1]
WHERE [Table 2].user_type in ([Table 1].allowed_user_type);
このクエリは、ユーザーが許可されていない場合は0行を返し、ユーザーが「許可されている」場合は1行を返します。次のような「count()」関数を使用することもできます。
SELECT count([Table 2].id)
FROM [Table 2], [Table 1]
WHERE [Table 2].user_type in ([Table 1].allowed_user_type);
これにより、一致する行の数を含む1つのフィールドを持つ1つの行が返されます。0は「許可されていない」を意味し、「1」は「許可されている」を意味します。
テーブル名またはフィールド名にスペースがある場合は、中括弧が必要です。スペースがない場合は、スペースを使用する必要はありません。