Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL插入4到5之间的随机小数+在一个插入查询中从查询中选择_Sql_Sql Server_Tsql_Sql Server 2012 - Fatal编程技术网

SQL插入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

我正在尝试从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 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,我不需要所有记录都是相同的