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

Wybierz wartości z listy, których nie ma w tabeli

Tabela temp jest najlepszym rozwiązaniem, ale jeśli nie jest to możliwe, możesz zmienić tabelę temp, wybierając stałe i łącząc je ze sobą.

Korzystając z tego rozwiązania, możesz wykonać następujące czynności:-

SELECT i
FROM 
(
    SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 6 UNION SELECT 7
) AS mylistofids 
LEFT JOIN mytable
ON mytable.id = i
WHERE mytable.id IS NULL;

Możesz także wygenerować ogromny zakres liczb (zakładając, że masz do czynienia z identyfikatorami całkowitymi), łącząc krzyżowo zakresy liczb. Następnie wybierz te, które są w klauzuli IN:-

SELECT i
FROM 
(
    SELECT units.i + tens.i * 10 + hundreds.i * 100 + thousands.i * 1000 + tensthousands.i * 10000 AS i
    FROM (SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0 ) AS units
    CROSS JOIN (SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0 ) AS tens
    CROSS JOIN (SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0 ) AS hundreds
    CROSS JOIN (SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0 ) AS thousands
    CROSS JOIN (SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0 ) AS tensthousands
) AS mylistofids 
LEFT JOIN mytable
ON mytable.id = i
WHERE mylistofids.i IN (1, 2, 3, 6, 7)
AND mytable.id IS NULL;



  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 Django psuje funkcję DateTimeField uwzględniającą strefę czasową podczas zapisywania go w bazie danych?

  2. Mysql policz wystąpienia podciągu, a następnie uporządkuj według

  3. Jak znaleźć kod ASCII dla danego znaku w MySQL?

  4. Niezdefiniowana właściwość:Illuminate\Database\Eloquent\Collection::Laravel 5.2

  5. Jakie są różnice między SQL a MySQL