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à:
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.
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]
0Use mysql function RAND[]
-------------------------
select FLOOR[RAND[] * 999999]
1Thế 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]
8Use mysql function RAND[]
-------------------------
select FLOOR[RAND[] * 999999]
9CREATE 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
0CREATE 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
1Cơ sở dữ liệu.Guide
MySQL UUID [] - Tạo số nhận dạng duy nhất trong MySQLMySQL 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
}
7function createBiggerNumber[id] {
return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}
function extractIdFromBiggerNumber[number] {
return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
8function createBiggerNumber[id] {
return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}
function extractIdFromBiggerNumber[number] {
return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
9DELIMITER $$
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 ;
0DELIMITER $$
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 ;
1DELIMITER $$
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 ;
2DELIMITER $$
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 ;
3Là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 ;
4DELIMITER $$
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 ;
5DELIMITER $$
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 ;
6DELIMITER $$
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 ;
7DELIMITER $$
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 ;
8DELIMITER $$
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 ;
9INSERT into article_table [title, date, url_id] VALUES ['asdf', '11/11/1111', 8373734]
0INSERT into article_table [title, date, url_id] VALUES ['asdf', '11/11/1111', 8373734]
1INSERT into article_table [title, date, url_id] VALUES ['asdf', '11/11/1111', 8373734]
2INSERT into article_table [title, date, url_id] VALUES ['asdf', '11/11/1111', 8373734]
3Tạ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]
4INSERT into article_table [title, date, url_id] VALUES ['asdf', '11/11/1111', 8373734]
5INSERT into article_table [title, date, url_id] VALUES ['asdf', '11/11/1111', 8373734]
6INSERT into article_table [title, date, url_id] VALUES ['asdf', '11/11/1111', 8373734]
7INSERT into article_table [title, date, url_id] VALUES ['asdf', '11/11/1111', 8373734]
8INSERT into article_table [title, date, url_id] VALUES ['asdf', '11/11/1111', 8373734]
9Là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ã MySQLTạ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]
7CREATE 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
3CREATE 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
4CREATE 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
5CREATE 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
6CREATE 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
7CREATE 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
8CREATE 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
9function createBiggerNumber[id] {
return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}
function extractIdFromBiggerNumber[number] {
return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
0function createBiggerNumber[id] {
return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}
function extractIdFromBiggerNumber[number] {
return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
1function createBiggerNumber[id] {
return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}
function extractIdFromBiggerNumber[number] {
return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
2function createBiggerNumber[id] {
return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}
function extractIdFromBiggerNumber[number] {
return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
3function createBiggerNumber[id] {
return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}
function extractIdFromBiggerNumber[number] {
return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
4function createBiggerNumber[id] {
return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}
function extractIdFromBiggerNumber[number] {
return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
5function createBiggerNumber[id] {
return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}
function extractIdFromBiggerNumber[number] {
return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
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
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
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
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
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
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
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
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
function createBiggerNumber[id] {
return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}
function extractIdFromBiggerNumber[number] {
return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
function createBiggerNumber[id] {
return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}
function extractIdFromBiggerNumber[number] {
return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
function createBiggerNumber[id] {
return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}
function extractIdFromBiggerNumber[number] {
return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
function createBiggerNumber[id] {
return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}
function extractIdFromBiggerNumber[number] {
return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
function createBiggerNumber[id] {
return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}
function extractIdFromBiggerNumber[number] {
return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
function createBiggerNumber[id] {
return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}
function extractIdFromBiggerNumber[number] {
return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}
function createBiggerNumber[id] {
return [id * constants.MySecretMultiplyValue] + constants.MySecretAddedValue;
}
function extractIdFromBiggerNumber[number] {
return [number - constants.MySecretAddedValue] / constants.MySecretMultiplyValue
}