【问题标题】:SQL insert random decimal between 4 and 5 + select from query in one insert querySQL 插入 4 到 5 之间的随机小数 + 在一次插入查询中从查询中选择
【发布时间】:2014-05-23 17:31:29
【问题描述】:

我正在尝试从选择查询中将结果插入表中 + 我想在一个插入查询中生成随机值,范围在 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 中执行此操作?

更新

我不需要所有属性的生成值完全相同。

【问题讨论】:

    标签: sql sql-server tsql sql-server-2012


    【解决方案1】:

    我就是这样解决的:

    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)
    

    【讨论】:

      【解决方案2】:

      以下生成随机小数。

      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)
      

      @EDIT:所以,我们需要一个不同的随机种子。如果您的 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
      

      【讨论】:

      • 它为所有记录提供相同的评分值 4.75,我不需要所有记录都相同
      【解决方案3】:

      我认为这样的代码会起作用。

      SELECT 4.0 + CAST(RAND() AS DECIMAL(5,2))
      
      --Result may give like this.
      --4.62
      

      【讨论】:

        猜你喜欢
        • 2016-08-26
        • 2021-01-09
        • 2012-07-30
        • 2014-10-17
        • 2014-09-01
        • 2013-11-20
        • 1970-01-01
        • 2013-11-15
        • 2014-12-31
        相关资源
        最近更新 更多