我有一个表,我添加了一个名为phone- 该表的id也设置为auto_increments的主键.如何在电话列中插入一个不会重复的随机值.以下UPDATE语句确实插入了随机值,但并非所有值都是唯一的.另外,我没有出售我也phone正确地投射了字段,但在尝试将其设置为带有ALTER TABLE命令的int(11)时遇到了问题(主要是,它正确运行,但在添加新行时)电话号码,插入的值被翻译成不同的号码).
UPDATE Ballot SET phone = FLOOR(50000000 * RAND()) + 1;
表规格
+------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | phone | varchar(11) | NO | | NULL | | | age | tinyint(3) | NO | | NULL | | | test | tinyint(4) | NO | | 0 | | | note | varchar(100) | YES | | NULL | | +------------+--------------+------+-----+---------+----------------+
-- tbl_name: Table
-- column_name: Column
-- chars_str: String containing acceptable characters
-- n: Length of the random string
-- dummy_tbl: Not a parameter, leave as is!
UPDATE tbl_name SET column_name = (
SELECT GROUP_CONCAT(SUBSTRING(chars_str , 1+ FLOOR(RAND()*LENGTH(chars_str)) ,1) SEPARATOR '')
FROM (SELECT 1 /* UNION SELECT 2 ... UNION SELECT n */) AS dummy_tbl
);
-- Example
UPDATE tickets SET code = (
SELECT GROUP_CONCAT(SUBSTRING('123abcABC-_$@' , 1+ FLOOR(RAND()*LENGTH('123abcABC-_$@')) ,1) SEPARATOR '')
FROM (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) AS dummy_tbl
);
Run Code Online (Sandbox Code Playgroud)

尝试这个
UPDATE Ballot SET phone = FLOOR(50000000 * RAND()) * id;
Run Code Online (Sandbox Code Playgroud)