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

Wybierz z powrotem rzeczy, które nie istnieją

załóżmy, że Twoje tagi ('c', 'cg', 'rx') są w tabeli o nazwie tags_match i mają taką samą strukturę jak powyżej

wtedy możesz to zrobić:

select tr.name 
from tags as tl 
    right join tags_match as tr 
    on tl.name = tr.name
where tl.name is null

Spowoduje to znalezienie wszystkich elementów w tags_match, których nie ma w tagach, więc dałoby to pożądany wynik, ale niestety Twoje tagi ('c', 'cg', 'rx') nie znajdują się w tabeli :(

Bez względu na to, czy możemy użyć podzapytania do „sfałszowania” tabeli

select tr.name 
from tags as tl 
    right join (select 'cg' as name 
                union select 'c' as name 
                union select 'rx' as name) as tr 
    on tl.name = tr.name
where tl.name is null

Chociaż jest to trochę brzydkie, to zadziała. Jeśli masz wiele elementów, które chcesz przetestować, możesz rozważyć utworzenie prawdziwej tabeli tymczasowej.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy istnieje bardziej wydajny sposób tworzenia stronicowania w Hibernate niż wykonywanie zapytań wybierających i zliczających?

  2. Błąd instalacji MySql 8.0.15 Nieprawidłowy szablon serwera

  3. Powolne zapytanie MySQL z dołączeniem, mimo że EXPLAIN pokazuje dobry plan

  4. Czy istnieje najlepsze praktyki/spójny sposób aktualizowania pola bazy danych, które zawiera magazyn klucz-wartość z haszem?

  5. Brak usługi MySQL