sql >> Database teknologi >  >> RDS >> Mysql

MySQL - Vælg alle undtagen hvad der er i denne tabel

Brug af LEFT JOIN/IS NULL

   SELECT DISTINCT
          i.data
     FROM IMAGE i
     JOIN USER_IMAGE ui ON ui.image_id = i.id
LEFT JOIN USER u ON u.id = ui.user_id
                AND u.user = ?
    WHERE u.id IS NULL

Brug af NOT IN

SELECT DISTINCT
       i.data
  FROM IMAGE i
  JOIN USER_IMAGE ui ON ui.image_id = i.id
 WHERE ui.user_id NOT IN (SELECT u.id
                            FROM USER u
                           WHERE u.user = ?)

Brug af NOT EXISTS

SELECT DISTINCT
       i.data
  FROM IMAGE i
  JOIN USER_IMAGE ui ON ui.image_id = i.id
 WHERE NOT EXISTS(SELECT NULL
                    FROM USER u
                   WHERE u.id = ui.user_id
                     AND u.user = ?)

Ydeevne:

LEFT JOIN/IS NULL og NOT IN give tilsvarende ydeevne - NOT EXISTS er ~30 % mindre effektiv. Se dette for flere detaljer .



  1. Vigtigheden af ​​backtick omkring tabelnavn i MySQL-forespørgsel

  2. Sådan konverteres MySQL-tid

  3. Tilslut HP-UX Itanium til SQL Server

  4. Korrekt måde at rense input i MySQL ved hjælp af PDO