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

MySQL:WHERE句で複数のペアを持つSELECT行を一括処理する方法

    洗練されたSQLが必要な場合は、行コンストラクターを使用できます。

    SELECT * FROM email_phone_notes WHERE (email, phone) IN (
      ('[email protected]'  , '555-1212'),
      ('[email protected]', '888-1212')
      -- etc.
    );
    

    ただし、これはインデックスに適しているわけではなく、大きなサイズのテーブルではお勧めできません。代わりに、必要なペアを使用してテーブルをマテリアライズし、それをテーブルと結合することができます。

    SELECT * FROM email_phone_notes NATURAL JOIN (
      SELECT '[email protected]' AS email, '555-1212' AS phone
    UNION ALL
      SELECT '[email protected]', '888-1212'
    -- etc.
    ) t;
    

    または、(一時的な)テーブルを事前入力します:

    CREATE TEMPORARY TABLE foo (PRIMARY KEY (email, phone)) Engine=MEMORY
      SELECT email, phone FROM email_phone_notes WHERE FALSE
    ;
    
    INSERT INTO foo
      (email, phone)
    VALUES
      ('[email protected]'  , '555-1212'),
      ('[email protected]', '888-1212')
      -- etc.
    ;
    
    SELECT * FROM email_phone_notes NATURAL JOIN foo;
    


    1. T-SQL UDFがスキーマにバインドされているかどうかを確認する方法(暗号化されている場合でも)

    2. データベースにセルビア語のラテン文字を保存する

    3. mysql_num_rowsまたはmssql_num_rowsと同等のPDO

    4. FOREIGN KEY制約によって参照されているため、オブジェクトを削除できませんでした-SQL Server/TSQLチュートリアルパート74