sql >> データベース >  >> RDS >> Mysql

MySQLチュートリアル:MySQL INステートメント(上級)

    MySQL INステートメントの基本的な使用法は、1つの列が複数の値と比較されることを扱います。 MySQL INステートメントの高度な使用法もいくつかあり、興味深いユースケースになります。サンプルテーブルuser_tableについて考えてみます。 ここで、5人のユーザーには、管理者、スーパーユーザーなどに基づく値1または0として異なる権限が割り当てられます。

    mysql> SELECT * FROM user_table;
    +-----------+----------+--------------+----------+-----------+
    | user_id   | is_admin | is_superuser | is_staff | is_active |
    +-----------+----------+--------------+----------+-----------+
    |    1      |    1     |       1      |     1    |     1     |
    |    2      |    0     |       1      |     1    |     1     |
    |    3      |    0     |       1      |     1    |     1     |
    |    4      |    0     |       0      |     0    |     1     |
    |    5      |    0     |       0      |     0    |     0     |
    +-----------+----------+--------------+----------+-----------+

    ユースケース1:MySQLINステートメントを使用して値を複数の列と比較する

    構文は次のとおりです。

    SELECT * FROM TableName WHERE value IN (column1, column2, column3, column4)

    例:

    mysql> SELECT * FROM user_table WHERE 1 IN (is_admin, is_superuser, is_staff, is_active);
    
    +-----------+----------+--------------+----------+-----------+
    | user_id   | is_admin | is_superuser | is_staff | is_active |
    +-----------+----------+--------------+----------+-----------+
    |    1      |    1     |       1      |     1    |     1     |
    |    2      |    0     |       1      |     1    |     1     |
    |    3      |    0     |       1      |     1    |     1     |
    |    4      |    0     |       0      |     0    |     1     |
    +-----------+----------+--------------+----------+-----------+

    通常のINステートメントには、1つの列のみが含まれます。 複数の値と比較されています 。

    SELECT * FROM TableName WHERE column1 IN (1,2,3,4)

    として機能します

    SELECT  * FROM   TableName WHERE  column1 = 1 OR column1 = 2 OR column1 = 3 OR column1 = 4

    このステートメントは価値です つまり、複数の列と比較して

    SELECT * FROM TableName WHERE 1 IN (column1, column2, column3, column4)

    と同じ

    SELECT  * FROM   TableName WHERE  column1 = 1 OR column2 = 1 OR column3 = 1 OR column4 = 1

    ユースケース2:複数の値を持つ複数の列を比較するためのMySQLINステートメント

    構文は次のとおりです。

    SELECT * FROM TableName WHERE (column1,column2) in ((value1,value2),(value3,value4),..)

    例:

    mysql> SELECT * FROM user_table WHERE (is_staff,is_admin) in ((1,0),(1,1));
    +-----------+----------+--------------+----------+-----------+
    | user_id   | is_admin | is_superuser | is_staff | is_active |
    +-----------+----------+--------------+----------+-----------+
    |    1      |    1     |       1      |     1    |     1     |
    |    2      |    0     |       1      |     1    |     1     |
    +-----------+----------+--------------+----------+-----------+

    それはとして動作します

    1. SQLiteデータベースの特定の行を削除するにはどうすればよいですか?

    2. ScaleGridがシドニーAWSリージョンで利用可能になりました

    3. PostgresPlus AdvancedServer9.3Betaの新しいOracle互換機能

    4. MySQLで小文字を含む行を見つける3つの方法