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

SELECT zakres liczb całkowitych w MySQL. Np. 1,2,3,4,...,n;

Problemy z Twoim zapytaniem:

  1. Nie możesz użyć range w klauzuli WHERE. Jest to alias i zostanie zdefiniowany dopiero po wykonaniu klauzuli WHERE.
  2. Nawet gdybyś mógł go użyć, nie ma sensu porównywać liczby z zestawem liczb za pomocą <> . Ogólnie możesz użyć IN(...) , ale w konkretnym przypadku powinieneś użyć BETWEEN 100000 and 999999 i uniknąć potrzeby RANGE funkcjonować.
  3. Jeśli chcesz tylko jedną liczbę, limit powinien wynosić 1, a nie coś losowego. Zwykle do wybierania losowych przedmiotów używasz ORDER BY RAND() .

Spróbuj użyć tego zapytania:

SELECT phoneNum, 100000 as rangeStart, 999999 AS rangeEnd
FROM phone
WHERE phoneNum NOT BETWEEN 100000 AND 999999
ORDER BY RAND()
LIMIT 1

Jeśli chcesz znaleźć liczbę, której nie ma w Twojej tabeli, a dostępne liczby nie są bliskie wyczerpania (powiedzmy, że przydzielono mniej niż 80%), dobrym podejściem byłoby wygenerowanie liczb losowych i sprawdzenie, czy są one przypisane, dopóki nie znajdziesz takiej, która jest nie.

Może istnieć czyste rozwiązanie MySQL, ale myślę, że wymaga kilku skręconych złączeń, losowych i modułowych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak usunąć duplikaty w mysql za pomocą przypadku

  2. Dlaczego otrzymuję, że zapytanie o błąd MySQL było puste?

  3. Pobieranie znacznika czasu za pomocą MySQL

  4. Znajdź liczbę kolumn w tabeli

  5. Jak mogę zaimportować geoDataFrame do MySQL?