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

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ư //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 //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:48

null nullnullnull

1.08910 Huy hiệu bạc29 Huy hiệu đồng10 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: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:24

FelkfelkFelkFelk

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 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ụ:

function createBiggerNumber[id] {
  return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}

function extractIdFromBiggerNumber[number] {
  return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}

Đã 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:36

SchuereschuereSchuereSchuere

1.57019 huy hiệu bạc33 huy hiệu đồng19 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.

DELIMITER $$

DROP TRIGGER IF EXISTS `auto_number`$$
CREATE TRIGGER `auto_number` BEFORE INSERT on users
FOR EACH ROW BEGIN
     SET new.auto_number = CONCAT[new.id, LEFT[UUID[], 8]];
END$$

DELIMITER ;

//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: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

function createBiggerNumber[id] {
  return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}

function extractIdFromBiggerNumber[number] {
  return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
7
function createBiggerNumber[id] {
  return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}

function extractIdFromBiggerNumber[number] {
  return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
8
function createBiggerNumber[id] {
  return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}

function extractIdFromBiggerNumber[number] {
  return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
9
DELIMITER $$

DROP TRIGGER IF EXISTS `auto_number`$$
CREATE TRIGGER `auto_number` BEFORE INSERT on users
FOR EACH ROW BEGIN
     SET new.auto_number = CONCAT[new.id, LEFT[UUID[], 8]];
END$$

DELIMITER ;
0
DELIMITER $$

DROP TRIGGER IF EXISTS `auto_number`$$
CREATE TRIGGER `auto_number` BEFORE INSERT on users
FOR EACH ROW BEGIN
     SET new.auto_number = CONCAT[new.id, LEFT[UUID[], 8]];
END$$

DELIMITER ;
1
DELIMITER $$

DROP TRIGGER IF EXISTS `auto_number`$$
CREATE TRIGGER `auto_number` BEFORE INSERT on users
FOR EACH ROW BEGIN
     SET new.auto_number = CONCAT[new.id, LEFT[UUID[], 8]];
END$$

DELIMITER ;
2
DELIMITER $$

DROP TRIGGER IF EXISTS `auto_number`$$
CREATE TRIGGER `auto_number` BEFORE INSERT on users
FOR EACH ROW BEGIN
     SET new.auto_number = CONCAT[new.id, LEFT[UUID[], 8]];
END$$

DELIMITER ;
3

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?

DELIMITER $$

DROP TRIGGER IF EXISTS `auto_number`$$
CREATE TRIGGER `auto_number` BEFORE INSERT on users
FOR EACH ROW BEGIN
     SET new.auto_number = CONCAT[new.id, LEFT[UUID[], 8]];
END$$

DELIMITER ;
4
DELIMITER $$

DROP TRIGGER IF EXISTS `auto_number`$$
CREATE TRIGGER `auto_number` BEFORE INSERT on users
FOR EACH ROW BEGIN
     SET new.auto_number = CONCAT[new.id, LEFT[UUID[], 8]];
END$$

DELIMITER ;
5
DELIMITER $$

DROP TRIGGER IF EXISTS `auto_number`$$
CREATE TRIGGER `auto_number` BEFORE INSERT on users
FOR EACH ROW BEGIN
     SET new.auto_number = CONCAT[new.id, LEFT[UUID[], 8]];
END$$

DELIMITER ;
6
DELIMITER $$

DROP TRIGGER IF EXISTS `auto_number`$$
CREATE TRIGGER `auto_number` BEFORE INSERT on users
FOR EACH ROW BEGIN
     SET new.auto_number = CONCAT[new.id, LEFT[UUID[], 8]];
END$$

DELIMITER ;
7
DELIMITER $$

DROP TRIGGER IF EXISTS `auto_number`$$
CREATE TRIGGER `auto_number` BEFORE INSERT on users
FOR EACH ROW BEGIN
     SET new.auto_number = CONCAT[new.id, LEFT[UUID[], 8]];
END$$

DELIMITER ;
8
DELIMITER $$

DROP TRIGGER IF EXISTS `auto_number`$$
CREATE TRIGGER `auto_number` BEFORE INSERT on users
FOR EACH ROW BEGIN
     SET new.auto_number = CONCAT[new.id, LEFT[UUID[], 8]];
END$$

DELIMITER ;
9
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
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
4
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
function createBiggerNumber[id] {
  return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}

function extractIdFromBiggerNumber[number] {
  return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
0
function createBiggerNumber[id] {
  return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}

function extractIdFromBiggerNumber[number] {
  return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
1
function createBiggerNumber[id] {
  return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}

function extractIdFromBiggerNumber[number] {
  return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
2
function createBiggerNumber[id] {
  return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}

function extractIdFromBiggerNumber[number] {
  return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
3
function createBiggerNumber[id] {
  return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}

function extractIdFromBiggerNumber[number] {
  return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
4
function createBiggerNumber[id] {
  return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}

function extractIdFromBiggerNumber[number] {
  return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
5
function createBiggerNumber[id] {
  return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}

function extractIdFromBiggerNumber[number] {
  return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
6

Bài Viết Liên Quan

Chủ Đề