Mysql
 sql >> база данни >  >> RDS >> Mysql

ИЗБЕРЕТЕ диапазон от цели числа в MySQL. напр. 1,2,3,4,...,n;

Проблеми с вашата заявка:

  1. Не можете да използвате range в клаузата WHERE. Това е псевдоним и ще бъде дефиниран само след изпълнение на клаузата WHERE.
  2. Дори и да можете да го използвате, няма смисъл да сравнявате число с набор от числа с помощта на <> . По принцип можете да използвате IN(...) , но във вашия конкретен случай трябва да използвате BETWEEN 100000 and 999999 и избягвайте нуждата от RANGE функция.
  3. Ако искате само едно число, ограничението трябва да бъде 1, а не нещо произволно. Обикновено, за да изберете произволни елементи, използвате ORDER BY RAND() .

Опитайте да използвате тази заявка:

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

Ако искате да намерите число, което не е във вашата таблица и наличните числа не са близо до изчерпване (да речем, че са присвоени по-малко от 80%), добър подход би бил да генерирате произволни числа и да проверявате дали са присвоени, докато не намерите такъв, който не е не.

Може да съществува чисто MySQL решение, но мисля, че се нуждае от някои усукани съединения, произволни и модулни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Може ли първичният ключ по подразбиране да бъде NULL? Защо е описано като такова?

  2. Как да намерите нечислови стойности в колона в MySQL

  3. Как да определим дали MySQL заявка е валидна?

  4. Надстройка на Laravel 5.4 – Нарушение на ограничението за целостта – Колоната не може да бъде нула

  5. Как да използвам MySQL през XAMPP?