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

mysqlクエリを使用して、を除くすべてを選択します

    NOT INの使用:

    SELECT w.*
      FROM WIDGET w
     WHERE w.widget_id NOT IN (SELECT c.widget
                                 FROM CHOSEN c
                                WHERE c.user_id = $user_id)
    

    NOT EXISTSの使用:

    SELECT w.*
      FROM WIDGET w
     WHERE NOT EXISTS (SELECT NULL
                         FROM CHOSEN c
                        WHERE c.widget_id = w.widget_id 
                          AND c.user_id = $user_id)
    

    LEFT JOIN / IS NULL:

       SELECT w.*
         FROM WIDGET w
    LEFT JOIN CHOSEN c ON c.widget_id = w.widget
                      AND c.user_id = $user_id
        WHERE w.widget IS NULL
    

    パフォーマンス:

    比較された列(いずれかのテーブルのwidget_id)はnull可能ではなく、LEFT JOIN /ISNULLはMySQLで最高のパフォーマンスを発揮します columnsはnull許容(値はNULLの可能性があります)、NOTINまたはNOTEXISTSのパフォーマンスが向上します



    1. mysqlの比較に適したRuby日時

    2. MySQLWorkbenchでデータベースをリバースエンジニアリングする方法

    3. SQLServer-Windows認証で接続します

    4. JPA SQL Server JDBCタイプの方言マッピングなし:-9