Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

PILIH rentang bilangan bulat di MySQL. Misalnya. 1,2,3,4,...,n;

Masalah dengan kueri Anda:

  1. Anda tidak dapat menggunakan range dalam klausa WHERE. Ini adalah alias dan hanya akan ditentukan setelah klausa WHERE dijalankan.
  2. Bahkan jika Anda bisa menggunakannya, tidak masuk akal untuk membandingkan angka dengan sekumpulan angka menggunakan <> . Secara umum Anda dapat menggunakan IN(...) , tetapi dalam kasus tertentu Anda harus menggunakan BETWEEN 100000 and 999999 dan hindari kebutuhan akan RANGE fungsi.
  3. Jika Anda hanya ingin satu nomor maka batasnya harus 1, bukan sesuatu yang acak. Biasanya untuk memilih item acak Anda menggunakan ORDER BY RAND() .

Coba gunakan kueri ini:

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

Jika Anda ingin menemukan nomor yang tidak ada di tabel Anda dan nomor yang tersedia tidak mendekati penipisan (katakanlah kurang dari 80% ditetapkan), pendekatan yang baik adalah membuat nomor acak dan memeriksa apakah nomor tersebut ditetapkan sampai Anda menemukan nomor yang tidak. 't.

Solusi MySQL murni mungkin ada tetapi saya pikir itu membutuhkan beberapa gabungan yang bengkok, acak dan modulus.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menghapus catatan dengan ID terendah

  2. Bagaimana cara mengganti nama kunci asing di mysql?

  3. Codeigniter bergabung dengan permintaan beberapa kondisi tidak berfungsi

  4. Bagaimana saya bisa membuat indeks pada substring kolom?

  5. Geo-Search (Jarak) di PHP/MySQL (Kinerja)