如何生成随机代码,并多次运行sql

时间:2012-11-05 04:13:54

标签: mysql sql

我有一个需要运行的查询,我有两个问题。

首先是我的查询:

INSERT INTO  `anzie_oscommerce`.`discount_codes` (
`discount_codes_id` ,
`discount_description` ,
`products_id` ,
`categories_id` ,
`manufacturers_id` ,
`excluded_products_id` ,
`customers_id` ,
`orders_total` ,
`order_info` ,
`exclude_specials` ,
`discount_codes` ,
`discount_values` ,
`minimum_order_amount` ,
`expires_date` ,
`number_of_orders` ,
`number_of_use` ,
`number_of_products` ,
`status`
)
VALUES (
'' ,  'GALA 2012', '' , '' , '' , '' , '' ,  '2',  '1',  '0',  substr(md5(uniqid(rand(), true)), 0, 8),  250,  '0.0000',  '2013-22-06',  '0',  '1',  '0',  '1'
);

第一个问题是我需要生成随机代码,我试图用我从php中获取的uniqid函数,但我知道这是不可能的。有没有办法在sql中做类似的事情?

第二个问题是我需要运行250次以生成250个不同的折扣代码。有多快的方法可以多次运行sql吗?

2 个答案:

答案 0 :(得分:1)

对于第一个问题:它取决于您正在使用的数据库。 Mysql有一个rand()函数:https://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_rand

对于第二个:数据库250不是很多 - 只需将它放在php for循环中就很可能了。

答案 1 :(得分:0)

我喜欢sonofagun回答的答案。另一个技巧是从伪表中选择250次。

INSERT INTO  `anzie_oscommerce`.`discount_codes` (
`discount_codes_id` ,
`discount_description` ,
`products_id` ,
`categories_id` ,
`manufacturers_id` ,
`excluded_products_id` ,
`customers_id` ,
`orders_total` ,
`order_info` ,
`exclude_specials` ,
`discount_codes` ,
`discount_values` ,
`minimum_order_amount` ,
`expires_date` ,
`number_of_orders` ,
`number_of_use` ,
`number_of_products` ,
`status`
)
(select '' ,  'GALA 2012', '' , '' , '' , '' , '' ,  '2',  '1',  '0',  substr(md5(uniqid(rand(), true)), 0, 8),  250,  '0.0000',  '2013-22-06',  '0',  '1',  '0',  '1' union all
select '' ,  'GALA 2012', '' , '' , '' , '' , '' ,  '2',  '1',  '0',  substr(md5(uniqid(rand(), true)), 0, 8),  250,  '0.0000',  '2013-22-06',  '0',  '1',  '0',  '1' union all
select '' ,  'GALA 2012', '' , '' , '' , '' , '' ,  '2',  '1',  '0',  substr(md5(uniqid(rand(), true)), 0, 8),  250,  '0.0000',  '2013-22-06',  '0',  '1',  '0',  '1' union all
select '' ,  'GALA 2012', '' , '' , '' , '' , '' ,  '2',  '1',  '0',  substr(md5(uniqid(rand(), true)), 0, 8),  250,  '0.0000',  '2013-22-06',  '0',  '1',  '0',  '1' union all
...however many times
);