日期:2014-05-17  浏览次数:20583 次

随机生成唯一的五位数
我想建一个表,然后主键是随机生成的一个唯一的5位数,0不能做首位,应该怎么做啊

------解决方案--------------------
主键随机生成的5位数? 那要是已存在表中,那咋办? 没听说过这么弄的.
只听说过随机生成的uniqueidentifier 作为主键的,其他类型没听说过.
------解决方案--------------------
建议楼主还是不要用随机数做主键了。
与其这样,还不如用一个自增主键 或者用uniqueidentifier
------解决方案--------------------
SQL code

CREATE TABLE t1
(
    id INT DEFAULT LEFT(REPLACE(ABS(CHECKSUM(NEWID())),0,''),5),
    name VARCHAR(20),
    sex VARCHAR(2)
)
INSERT INTO t1 (name,sex)
SELECT '张三','男' UNION ALL
SELECT '李四','男' UNION ALL
SELECT '马娘娘','女'

SELECT * FROM t1

---------------------------
id    name    sex
21168    张三    男
14723    李四    男
26245    马娘娘    女

------解决方案--------------------
建议用identity或是guid 类型。

随机五位数,还得保证不重复,完全没有必要。
------解决方案--------------------
SQL code

with t as (
select 11110 as id union 
select 11121 )
select top 1 id from (
select top 99999 
row_number()over(order by a.name) as id 
from master..spt_values a ,master..spt_values b) t
where id>10000
and id not in (select id from t)
order by newid()

------解决方案--------------------
楼主,随机生成的五位数作主键是不科学的啊!因为会有重复,还不如用序列,或者用伪列,完全满足楼主。