SQL插入4到5之间的随机小数+在一个插入查询中从查询中选择
我正在尝试从select query+将结果插入到一个表中,我希望在一个insert查询中生成范围在4到5之间的随机值。这就是我目前拥有的:SQL插入4到5之间的随机小数+在一个插入查询中从查询中选择,sql,sql-server,tsql,sql-server-2012,Sql,Sql Server,Tsql,Sql Server 2012,我正在尝试从select query+将结果插入到一个表中,我希望在一个insert查询中生成范围在4到5之间的随机值。这就是我目前拥有的: INSERT INTO a(PropertyID, TestimonialID, Rating) SELECT b.PropertyID, b.TestimonialID FROM [b] WHERE b.PropertyID NOT IN(SELECT a.PropertyID FROM a), -- Function for gene
INSERT INTO a(PropertyID, TestimonialID, Rating)
SELECT b.PropertyID, b.TestimonialID
FROM [b]
WHERE b.PropertyID NOT IN(SELECT a.PropertyID FROM a), -- Function for generating rating value between 4 and 5 should come here
在SQL Server 2012中如何执行此操作
使现代化
我不需要为所有属性生成完全相同的值。下面生成一个随机小数
insert into a(PropertyID, TestimonialID, Rating)
select
b.PropertyID,
b.TestimonialID,
(4 + RAND( (DATEPART(mm, GETDATE()) * 100000 )
+ (DATEPART(ss, GETDATE()) * 1000 )
+ DATEPART(ms, GETDATE()) )) as RandomRating
from
[b]
where
b.PropertyID not in (select a.PropertyID from a)
@编辑:所以,我们需要一个不同的随机种子。如果PropertyID列是整数,请尝试用以下内容替换选择中的该部分:
4 + RAND(b.PropertyID) as RandomRating,
我刚刚使用以下查询对此进行了测试,效果良好:
select
a.col,
-- random rating
4 + RAND(a.col) as RandomRating
from
(
select 1 as col
union select 2 as col
union select 3 as col
union select 4 as col
union select 5 as col
union select 6 as col
) a
下面生成一个随机小数
insert into a(PropertyID, TestimonialID, Rating)
select
b.PropertyID,
b.TestimonialID,
(4 + RAND( (DATEPART(mm, GETDATE()) * 100000 )
+ (DATEPART(ss, GETDATE()) * 1000 )
+ DATEPART(ms, GETDATE()) )) as RandomRating
from
[b]
where
b.PropertyID not in (select a.PropertyID from a)
@编辑:所以,我们需要一个不同的随机种子。如果PropertyID列是整数,请尝试用以下内容替换选择中的该部分:
4 + RAND(b.PropertyID) as RandomRating,
我刚刚使用以下查询对此进行了测试,效果良好:
select
a.col,
-- random rating
4 + RAND(a.col) as RandomRating
from
(
select 1 as col
union select 2 as col
union select 3 as col
union select 4 as col
union select 5 as col
union select 6 as col
) a
我认为这样的代码可以工作
SELECT 4.0 + CAST(RAND() AS DECIMAL(5,2))
--Result may give like this.
--4.62
我认为这样的代码可以工作
SELECT 4.0 + CAST(RAND() AS DECIMAL(5,2))
--Result may give like this.
--4.62
我就是这样解决的:
INSERT INTO a(PropertyID, TestimonialID, Rating) SELECT b.PropertyID, b.TestimonialID,
ROUND(RAND(CHECKSUM(NEWID())) * (5-4),5) + 4 as RandomRating FROM [b]
WHERE b.PropertyID NOT IN(SELECT a.PropertyID FROM a)
我就是这样解决的:
INSERT INTO a(PropertyID, TestimonialID, Rating) SELECT b.PropertyID, b.TestimonialID,
ROUND(RAND(CHECKSUM(NEWID())) * (5-4),5) + 4 as RandomRating FROM [b]
WHERE b.PropertyID NOT IN(SELECT a.PropertyID FROM a)
它对所有记录都给出了相同的评级值4.75,我不需要所有记录都是相同的。它对所有记录都给出了相同的评级值4.75,我不需要所有记录都是相同的