Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [sql] Jak znaleźć brakujące ID w bazie
M@X
post
Post #1





Grupa: Zarejestrowani
Postów: 212
Pomógł: 0
Dołączył: 18.12.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witam.
Mam baze prawie 100 000 rekordów. Każdy rekord ma swój identyfikator (ID) nadawany rosnąco. Jednak w przedziale 1 - 100 000 są pewne luki. Niektóre rekordy są wykasowane.
Chciałbym sprawdzić jakich rekordów brakuje. Wylistować te brakujące ID....
Nie moge wpaść na żaden pomysł...
Może ktoś nakierować jakim zapytaniem sql mogę coś takiego wyciągnąć ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 807
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Zakres szukany od 0-9999. Dla większego zakresu trzeba dodać kolejne "paczki" UNION i dodać je w sumowaniu id.
  1. SELECT id
  2. FROM
  3. (
  4. SELECT (a.liczba+b.liczba*10+c.liczba*100+d.liczba*1000) AS id
  5. FROM (
  6. SELECT 0 AS liczba UNION ALL
  7. SELECT 1 UNION ALL
  8. SELECT 2 UNION ALL
  9. SELECT 3 UNION ALL
  10. SELECT 4 UNION ALL
  11. SELECT 5 UNION ALL
  12. SELECT 6 UNION ALL
  13. SELECT 7 UNION ALL
  14. SELECT 8 UNION ALL
  15. SELECT 9) AS a,
  16. (
  17. SELECT 0 AS liczba UNION ALL
  18. SELECT 1 UNION ALL
  19. SELECT 2 UNION ALL
  20. SELECT 3 UNION ALL
  21. SELECT 4 UNION ALL
  22. SELECT 5 UNION ALL
  23. SELECT 6 UNION ALL
  24. SELECT 7 UNION ALL
  25. SELECT 8 UNION ALL
  26. SELECT 9) AS b,
  27. (
  28. SELECT 0 AS liczba UNION ALL
  29. SELECT 1 UNION ALL
  30. SELECT 2 UNION ALL
  31. SELECT 3 UNION ALL
  32. SELECT 4 UNION ALL
  33. SELECT 5 UNION ALL
  34. SELECT 6 UNION ALL
  35. SELECT 7 UNION ALL
  36. SELECT 8 UNION ALL
  37. SELECT 9) AS c,
  38. (
  39. SELECT 0 AS liczba UNION ALL
  40. SELECT 1 UNION ALL
  41. SELECT 2 UNION ALL
  42. SELECT 3 UNION ALL
  43. SELECT 4 UNION ALL
  44. SELECT 5 UNION ALL
  45. SELECT 6 UNION ALL
  46. SELECT 7 UNION ALL
  47. SELECT 8 UNION ALL
  48. SELECT 9) AS d
  49. ) AS tmp
  50. LEFT JOIN tabela AS t ON t.id=tmp.id
  51. WHERE t.id IS NULL
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 16:57