Mysql
 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)

ЛЯВО ПРИСЪЕДИНЯВАНЕ/Е НЯЛО:

   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 в която и да е таблица) не могат да се нулират, LEFT JOIN/IS NULL се представя най-добре в MySQL . Ако колоните са нулеви (стойността може да е NULL), NOT IN или NOT EXISTS се представят по-добре .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql_fetch_array връща само един ред

  2. Кой е най-добрият начин за съхраняване на чувствителни данни в MySQL?

  3. Фалшиво ограничение на външния ключ е неуспешно

  4. Импортирайте CSV в MySQL

  5. Не може да се увеличи max_open_files за Mysql max-connections в Ubuntu 15