Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wyklucz rekordy, jeśli pasuje odpowiednia tabela

Możesz użyć NOT EXISTS

SELECT a.id, a.name
FROM A
WHERE NOT EXISTS
(
    SELECT 1 FROM B
    WHERE b.A = a.id AND b.cond = 'X'
)

Jednak zawsze zapominam, że MySql jest jedynym (?) rdbms, który ma problemy z optymalizacją EXISTS /NOT EXISTS . Dlatego nieco bardziej wydajne jest użycie LEFT JOIN podejście.

http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/

W MS SQL-Server lepiej jest użyć NOT EXISTS .

http://sqlperformance.com/2012/12 /t-sql-queries/left-anty-semi-join



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Importowanie starego folderu danych mysql

  2. Jak przeprowadzić wyszukiwanie LIKE z zaszyfrowanymi danymi?

  3. Nie można połączyć się zdalnie z instalacją EC2 MySQL

  4. Zapytanie MySQL - używając SUMA z COUNT

  5. Jak przekonwertować mySQL Query do Laravel 5.4 Query Builder?