sql >> Databáze >  >> RDS >> Mysql

MySQL - Vybrat vše kromě toho, co je v této tabulce

Pomocí 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

Pomocí 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 = ?)

Pomocí 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 = ?)

Výkon:

LEFT JOIN/IS NULL a NOT IN poskytovat ekvivalentní výkon – NOT EXISTS je o 30 % méně účinný. Další podrobnosti naleznete zde .



  1. Stáhněte si csv z codeigniter mysql

  2. Jak to_char() funguje v PostgreSQL

  3. Problémy s příkazem postgresql COPY s Rails na jiném serveru

  4. Jak změnit velikost ovládacích prvků formuláře v Accessu 2016