Hướng dẫn mysql random number between - số ngẫu nhiên mysql giữa


Để có được giá trị ngẫu nhiên giữa hai giá trị, hãy sử dụng phương thức mysql rand () với sàn (). Cú pháp như sau.

select FLOOR( RAND() * (maximumValue-minimumValue) + minimumValue) as anyVariableName;

Hãy để chúng tôi kiểm tra với một số giá trị tối đa và tối thiểu. Giá trị tối đa mà chúng tôi đang xem xét là 200 và tối thiểu là 100. Số ngẫu nhiên sẽ nằm trong khoảng từ 100 đến 200 bao gồm 100 đến 200.

Các truy vấn là như sau.

mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;

Sau đây là đầu ra.

+-------------+
| RandomValue |
+-------------+
| 144         |
+-------------+
1 row in set (0.00 sec)

Bây giờ nếu chúng ta sẽ chạy cùng một truy vấn một lần nữa, đầu ra sẽ khác nhau.

mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;

Sau đây là đầu ra có giá trị khác vì đây là những giá trị ngẫu nhiên giữa một phạm vi chúng tôi đặt ở trên.

+-------------+
| RandomValue |
+-------------+
| 184         |
+-------------+
1 row in set (0.00 sec)

Hướng dẫn mysql random number between - số ngẫu nhiên mysql giữa

Cập nhật vào ngày 30 tháng 3 năm 2019 22:30:24

  • Câu hỏi và câu trả lời liên quan
  • Chọn một giá trị cụ thể giữa hai giá trị cột trong MySQL?
  • Tìm nạp một giá trị giữa các giá trị khác nhau trong MySQL
  • Chọn hai hàng ngẫu nhiên trong cơ sở dữ liệu MySQL?
  • Nhận giá trị ngẫu nhiên từ một loạt các số trong JavaScript?
  • Đặt hàng ngẫu nhiên trong MySQL với cột giá trị ngẫu nhiên?
  • Tổng số ngẫu nhiên giữa hai số nguyên JavaScript
  • Làm thế nào để có được tối đa của hai giá trị MySQL?
  • Khắc phục giá trị cột cụ thể và hiển thị các giá trị ngẫu nhiên cho phần còn lại của các hàng trong MySQL
  • Tìm sự khác biệt giữa hai giá trị DateTime với MySQL?
  • Truy vấn MySQL để có được hai giá trị cột cao nhất đầu tiên từ một bảng?
  • Nhận được sự khác biệt giữa hai dấu thời gian tính bằng giây trong MySQL?
  • Làm thế nào để tìm thấy giá trị bị thiếu giữa hai bảng MySQL?
  • Làm thế nào để có được phạm vi số nguyên ngẫu nhiên MySQL?
  • Làm thế nào để có được các giá trị lớn nhất trong hai cột trong MySQL?
  • Làm thế nào để tìm số nguyên tố giữa hai giá trị hoặc lên đến một giá trị trong r?

Tôi có một cơ sở dữ liệu cho các bài viết và có thể muốn tạo một số nguyên ngẫu nhiên độc đáo cho mỗi bài viết để chúng có thể được truy cập thông qua URL như https://blablabla.com/articles/8373734, v.v.

Tôi có thể đạt được điều đó trong phụ trợ Python, nhưng làm thế nào để chúng ta đạt được điều này trong các câu MySQL?

Ví dụ: một bài viết mới đã được thực hiện và được chèn vào cơ sở dữ liệu:

INSERT into article_table (title, date, url_id) VALUES ('asdf', '11/11/1111', 8373734)

URL_ID ở đây là số nguyên ngẫu nhiên duy nhất (1000 ~ 10000000) được tạo tự động.

Tôi tin rằng ID chính và tự động tăng cường là cách tốt để giải quyết vấn đề này. Nhưng câu hỏi của tôi là:

  1. Trong kịch bản thực tế, họ (các công ty) có sử dụng ID chính hoặc tự động không? Điều này có thể phơi bày cách mà phần dữ liệu bạn (từng) có trong cơ sở dữ liệu. Lấy cái https://www.zhihu.com/question/41490222222 này, ví dụ, tôi đã thử hàng trăm con số khoảng 41490222, tất cả đều không tìm thấy 404. Có vẻ như con số được ghi lại rất thưa thớt, không thể đạt được bằng cách tự động tăng.

  2. Có cách nào hiệu quả để tạo ra số ngẫu nhiên như vậy mà không kiểm tra trùng lặp cho mỗi vòng lặp không?

Hỏi ngày 20 tháng 9 năm 2017 lúc 11:48Sep 20, 2017 at 11:48Sep 20, 2017 at 11:48Sep 20, 2017 at 11:48

null nullnullnullnull

1.08910 Huy hiệu bạc29 Huy hiệu đồng10 silver badges29 bronze badges10 silver badges29 bronze badges10 silver badges29 bronze badges

7

Use mysql function RAND()
-------------------------

select FLOOR(RAND() * 999999)

Đã trả lời ngày 20 tháng 9 năm 2017 lúc 11:52Sep 20, 2017 at 11:52Sep 20, 2017 at 11:52Sep 20, 2017 at 11:52

1

Bạn có thể sử dụng

Use mysql function RAND()
-------------------------

select FLOOR(RAND() * 999999)
8 hoặc nếu nó phải là số
Use mysql function RAND()
-------------------------

select FLOOR(RAND() * 999999)
9 cho điều đó.

Đã trả lời ngày 20 tháng 9 năm 2017 lúc 12:24Sep 20, 2017 at 12:24Sep 20, 2017 at 12:24Sep 20, 2017 at 12:24

FelkfelkFelkFelkFelk

7.1902 Huy hiệu vàng36 Huy hiệu bạc59 Huy hiệu đồng2 gold badges36 silver badges59 bronze badges2 gold badges36 silver badges59 bronze badges2 gold badges36 silver badges59 bronze badges

4

Mặc dù các kỹ năng SQL của tôi hơi gỉ, tôi nghĩ bạn có thể muốn tạo một chức năng bằng cách sử dụng chức năng RAND.

CREATE PROCEDURE GetRandomValue()
BEGIN

  DECLARE newUrlId INT DEFAULT 0;

  WHILE (
    newUrlId = 0 
    OR IF EXISTS(SELECT 1 FROM yourTable WHERE url_id = newUrlId)
  )
  DO
    SET newUrlId = SELECT FLOOR(RAND() * 999999)
  END WHILE

  RETURN newUrlId
END

Sau đó, một lần nữa, tại sao tạo ra một sự ồn ào như vậy trong khi bạn có thể sử dụng các cách khác để tạo "số ngẫu nhiên lớn hơn"

Ví dụ:

mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
0

Đã trả lời ngày 20 tháng 9 năm 2017 lúc 12:36Sep 20, 2017 at 12:36Sep 20, 2017 at 12:36Sep 20, 2017 at 12:36

SchuereschuereSchuereSchuereSchuere

1.57019 huy hiệu bạc33 huy hiệu đồng19 silver badges33 bronze badges19 silver badges33 bronze badges19 silver badges33 bronze badges

Logic được kết hợp với khóa chính của họ | Id, vì vậy chúng tôi không cần kiểm tra lại liệu dữ liệu có tồn tại hay không.

mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
1

https://gist.github.com/yogithesymbian/698b27138a5ba89d2a32e3fc7ddd3cfb

Đã trả lời ngày 21 tháng 10 năm 2021 lúc 3:23Oct 21, 2021 at 3:23Oct 21, 2021 at 3:23Oct 21, 2021 at 3:23

    Mục lục
  • Làm thế nào để tạo một số ngẫu nhiên duy nhất khi chèn vào MySQL?
  • Thế hệ số duy nhất MySQL
  • Tạo một chuỗi 10 ký tự ngẫu nhiên duy nhất bằng MySQL?
  • Cơ sở dữ liệu.Guide
  • MySQL UUID () - Tạo số nhận dạng duy nhất trong MySQL
  • Làm thế nào để tạo số ngẫu nhiên mà không lặp lại trong cơ sở dữ liệu bằng PHP?
  • Tạo số ngẫu nhiên duy nhất trong SQL Server
  • Làm thế nào để tạo số ngẫu nhiên trong SQL Server?
  • Tạo 6 chữ số số ngẫu nhiên duy nhất trong ví dụ mã MySQL

Làm thế nào để tạo một số ngẫu nhiên duy nhất khi chèn vào MySQL?

INSERT into article_table (title, date, url_id) VALUES ('asdf', '11/11/1111', 8373734)
Use mysql function RAND()
-------------------------

select FLOOR(RAND() * 999999)
CREATE PROCEDURE GetRandomValue()
BEGIN

  DECLARE newUrlId INT DEFAULT 0;

  WHILE (
    newUrlId = 0 
    OR IF EXISTS(SELECT 1 FROM yourTable WHERE url_id = newUrlId)
  )
  DO
    SET newUrlId = SELECT FLOOR(RAND() * 999999)
  END WHILE

  RETURN newUrlId
END
Use mysql function RAND()
-------------------------

select FLOOR(RAND() * 999999)
0
Use mysql function RAND()
-------------------------

select FLOOR(RAND() * 999999)
1

Thế hệ số duy nhất MySQL

Tạo một chuỗi 10 ký tự ngẫu nhiên duy nhất bằng MySQL?

Tạo một chuỗi 10 ký tự ngẫu nhiên duy nhất bằng MySQL?

Use mysql function RAND()
-------------------------

select FLOOR(RAND() * 999999)
8
Use mysql function RAND()
-------------------------

select FLOOR(RAND() * 999999)
9
CREATE PROCEDURE GetRandomValue()
BEGIN

  DECLARE newUrlId INT DEFAULT 0;

  WHILE (
    newUrlId = 0 
    OR IF EXISTS(SELECT 1 FROM yourTable WHERE url_id = newUrlId)
  )
  DO
    SET newUrlId = SELECT FLOOR(RAND() * 999999)
  END WHILE

  RETURN newUrlId
END
0
CREATE PROCEDURE GetRandomValue()
BEGIN

  DECLARE newUrlId INT DEFAULT 0;

  WHILE (
    newUrlId = 0 
    OR IF EXISTS(SELECT 1 FROM yourTable WHERE url_id = newUrlId)
  )
  DO
    SET newUrlId = SELECT FLOOR(RAND() * 999999)
  END WHILE

  RETURN newUrlId
END
1

Cơ sở dữ liệu.Guide

MySQL UUID () - Tạo số nhận dạng duy nhất trong MySQL

MySQL UUID () - Tạo số nhận dạng duy nhất trong MySQL

mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
07
mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
08
mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
09
mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
10
+-------------+
| RandomValue |
+-------------+
| 144         |
+-------------+
1 row in set (0.00 sec)
51
mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
12
mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
13

Làm thế nào để tạo số ngẫu nhiên mà không lặp lại trong cơ sở dữ liệu bằng PHP?

mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
14
mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
15
mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
16
mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
17
mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
18
mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
19
INSERT into article_table (title, date, url_id) VALUES ('asdf', '11/11/1111', 8373734)
0
INSERT into article_table (title, date, url_id) VALUES ('asdf', '11/11/1111', 8373734)
1
INSERT into article_table (title, date, url_id) VALUES ('asdf', '11/11/1111', 8373734)
2
INSERT into article_table (title, date, url_id) VALUES ('asdf', '11/11/1111', 8373734)
3

Tạo số ngẫu nhiên duy nhất trong SQL Server

INSERT into article_table (title, date, url_id) VALUES ('asdf', '11/11/1111', 8373734)
4
INSERT into article_table (title, date, url_id) VALUES ('asdf', '11/11/1111', 8373734)
5
INSERT into article_table (title, date, url_id) VALUES ('asdf', '11/11/1111', 8373734)
6
INSERT into article_table (title, date, url_id) VALUES ('asdf', '11/11/1111', 8373734)
7
INSERT into article_table (title, date, url_id) VALUES ('asdf', '11/11/1111', 8373734)
8
INSERT into article_table (title, date, url_id) VALUES ('asdf', '11/11/1111', 8373734)
9

Làm thế nào để tạo số ngẫu nhiên trong SQL Server?

Tạo 6 chữ số số ngẫu nhiên duy nhất trong ví dụ mã MySQL

Tạo 6 chữ số số ngẫu nhiên duy nhất trong ví dụ mã MySQL

Use mysql function RAND()
-------------------------

select FLOOR(RAND() * 999999)
7

CREATE PROCEDURE GetRandomValue()
BEGIN

  DECLARE newUrlId INT DEFAULT 0;

  WHILE (
    newUrlId = 0 
    OR IF EXISTS(SELECT 1 FROM yourTable WHERE url_id = newUrlId)
  )
  DO
    SET newUrlId = SELECT FLOOR(RAND() * 999999)
  END WHILE

  RETURN newUrlId
END
2
CREATE PROCEDURE GetRandomValue()
BEGIN

  DECLARE newUrlId INT DEFAULT 0;

  WHILE (
    newUrlId = 0 
    OR IF EXISTS(SELECT 1 FROM yourTable WHERE url_id = newUrlId)
  )
  DO
    SET newUrlId = SELECT FLOOR(RAND() * 999999)
  END WHILE

  RETURN newUrlId
END
3
+-------------+
| RandomValue |
+-------------+
| 184         |
+-------------+
1 row in set (0.00 sec)
74
CREATE PROCEDURE GetRandomValue()
BEGIN

  DECLARE newUrlId INT DEFAULT 0;

  WHILE (
    newUrlId = 0 
    OR IF EXISTS(SELECT 1 FROM yourTable WHERE url_id = newUrlId)
  )
  DO
    SET newUrlId = SELECT FLOOR(RAND() * 999999)
  END WHILE

  RETURN newUrlId
END
5
CREATE PROCEDURE GetRandomValue()
BEGIN

  DECLARE newUrlId INT DEFAULT 0;

  WHILE (
    newUrlId = 0 
    OR IF EXISTS(SELECT 1 FROM yourTable WHERE url_id = newUrlId)
  )
  DO
    SET newUrlId = SELECT FLOOR(RAND() * 999999)
  END WHILE

  RETURN newUrlId
END
6
CREATE PROCEDURE GetRandomValue()
BEGIN

  DECLARE newUrlId INT DEFAULT 0;

  WHILE (
    newUrlId = 0 
    OR IF EXISTS(SELECT 1 FROM yourTable WHERE url_id = newUrlId)
  )
  DO
    SET newUrlId = SELECT FLOOR(RAND() * 999999)
  END WHILE

  RETURN newUrlId
END
7
CREATE PROCEDURE GetRandomValue()
BEGIN

  DECLARE newUrlId INT DEFAULT 0;

  WHILE (
    newUrlId = 0 
    OR IF EXISTS(SELECT 1 FROM yourTable WHERE url_id = newUrlId)
  )
  DO
    SET newUrlId = SELECT FLOOR(RAND() * 999999)
  END WHILE

  RETURN newUrlId
END
8
CREATE PROCEDURE GetRandomValue()
BEGIN

  DECLARE newUrlId INT DEFAULT 0;

  WHILE (
    newUrlId = 0 
    OR IF EXISTS(SELECT 1 FROM yourTable WHERE url_id = newUrlId)
  )
  DO
    SET newUrlId = SELECT FLOOR(RAND() * 999999)
  END WHILE

  RETURN newUrlId
END
9
mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
00
mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
01
mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
02
mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
03
mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
04
mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
05
mysql> select FLOOR( RAND() * (200-100) + 100) as RandomValue;
06