标签: random

为有关系的几个表生成假数据

我有 3 个表,我想在其中生成UsersCategoryLink.

如何在表中插入包含表UserCategoryLinkUserID随机用户和表中User随机 id 的列Categories。在这个SQL 小提琴中,您可以看到带有一些值的表。

  • UsersCategoryLink 必须填充随机用户和类别。
  • 每个用户必须有两个类别。
  • UserIDCategoryID是主键,所以每个值都必须是唯一的。
  • 我正在使用 SQL Server Express。

一些信息的表格和关系我想要什么

sql-server insert random relations

5
推荐指数
1
解决办法
1515
查看次数

当我们更改计算机日期/时间时,postgresql 的 uuid_generate_v1() 可能会发生冲突吗?

根据postgresql uuid-ossp文档uuid_generate_v1()是基于Mac地址+时间戳:

https://www.postgresql.org/docs/9.4/static/uuid-ossp.html

在分布式数据库场景中,我们有数百个数据库使用 UUID 键生成记录并同步回中央数据库。

假设我们检测到一台机器将来的日期/时间错误,我们将其改回正确的日期/时间。它可能会在此特定计算机上生成冲突的 UUID 密钥吗?

一种情况是夏令时/夏令时。

postgresql random time uuid

5
推荐指数
1
解决办法
1604
查看次数

为每行和每列生成随机数

我将在我的数据库中编辑一些假数据。但是如果我为每一行和每一列生成随机数,它就没有我想要的那么随机。结果可以在下图中看到。

没有随机数

这是我使用的代码:

WITH x AS 
(
    SELECT mintwee, mineen, nul, pluseen, plustwee 
    FROM Topic
)
SELECT mintwee = CAST(RAND()*100 AS INT),
       mineen = CAST(RAND()*100 AS INT), 
       nul = CAST(RAND()*100 AS INT),
       pluseen = CAST(RAND()*100 AS INT),
       plustwee = CAST(RAND()*100 AS INT)
FROM x
Run Code Online (Sandbox Code Playgroud)

和这个:

WITH x AS 
(
    SELECT 
        mintwee = CAST(RAND()*100 AS INT), 
        mineen = CAST(RAND()*100 AS INT),
        nul = CAST(RAND()*100 AS INT), 
        pluseen = CAST(RAND()*100 AS INT), 
        plustwee = CAST(RAND()*100 AS INT)
    FROM Topic
)
SELECT mintwee, mineen, …
Run Code Online (Sandbox Code Playgroud)

sql-server random

4
推荐指数
1
解决办法
1万
查看次数

这个语句是如何在 Postgres 中更新 3 行的?

我很好奇这个语句是如何在 Postgres 中更新 3 行的。在我运行它的所有其他时间,它会更新 0 或 1。有没有办法找出哪些行?

bestsales=# update keyword set revenue = random()*10 where id = cast(random()*99999 as int);
UPDATE 3
Run Code Online (Sandbox Code Playgroud)

id 是主键。

 id               | integer                        | not null default nextval('keyword_id_seq'::regclass)
    "keyword_pkey" PRIMARY KEY, btree (id)
Run Code Online (Sandbox Code Playgroud)

我尝试将其运行为SELECT

bestsales=# select * from keyword where id = cast(random()*99999 as int);
  id   |       keyword       | seed_id | source | search_count | country | language | volume | cpc  | competition | modified_on | google_violation | revenue | bing_violation
-------+---------------------+---------+--------+--------------+---------+----------+--------+------+-------------+-------------+------------------+---------+---------------- …
Run Code Online (Sandbox Code Playgroud)

postgresql random update

4
推荐指数
2
解决办法
247
查看次数

按随机含义排序(postgresql)

在 PostgreSQL 中选择随机行的一种可能方法是:

\n\n

select * from table order by random() limit 1000;

\n\n

(另请参阅此处。)

\n\n

我的问题是,order by random()到底是什么意思?是否以某种方式生成了一个随机数并将其视为某种“种子”?或者这是特殊的内置语法,在这个地方random()具有与其他上下文不同的含义?

\n\n

从一些实验来看,最后一种解释似乎更合理。考虑以下:

\n\n
# select random();\n      random       \n\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\n 0.336829286068678\n(1 row)\n
Run Code Online (Sandbox Code Playgroud)\n\n
# select * from article order by 0.336829286068678 limit 5;\nERROR:  non-integer constant in ORDER BY\nLINE 1: select * from article order by 0.336829286068678 limit 5;\n
Run Code Online (Sandbox Code Playgroud)\n

postgresql random select

4
推荐指数
1
解决办法
4351
查看次数

如何从 RAND 函数(或其他地方)获得令人满意的随机数?

我正在为应用程序用户创建一个伪随机数据集进行训练。

我很惊讶,如果我用 1、2、3 等为 RAND() 函数设置种子,我从种子函数中得到几乎相同的结果。但是,当未提供种子时,这似乎是“适当随机”但可重复的值。

SELECT   RAND(1) AS R1A, RAND() AS R1B, RAND(2) AS R2A, RAND() AS R2B,
         RAND(3) AS R3A, RAND() AS R3B, RAND(4) AS R4A, RAND() AS R4B

0.713591993212924

0.472241415009636  

0.713610626184182  

0.217821139260039  

0.71362925915544  

0.963400850719992  

0.713647892126698  

0.708980575436056
Run Code Online (Sandbox Code Playgroud)

乍一看,我似乎可以评估 RAND(@seed) 并丢弃结果,然后评估 RAND() 以获得我的训练数据的几个真正“随机”的数字 - 到目前为止,我计划每条记录使用四个;我可能还需要一些。

那个计划能正常运作吗?而且,我在看什么,在这里?而且,它应该在文档中吗?我还没找到

文档说明了这一点,这可能是一个线索:

RAND 函数是一个伪随机数生成器,其运行方式类似于 C 运行时库 rand 函数。如果没有提供种子,系统会生成自己的可变种子编号。

C 中的 rand 函数是否为相似的种子输入产生相似的输出?

我认为文档还可以更清楚地说明 RAND(@number) 后跟 RAND() 总是生成相同的数字。但这就是我想要的,也是任何有经验的计算机程序员都会期望的。

我想我可以用从https://www.random.org/获得的随机数据键来填充表格以 用于此目的 - 但这有缺点。

更新,临时结论

我对 RAND() 有以下结论,现在我想我会继续下去,但要记住替代方案。

RAND(@int) 使用给定的整数值设置随机数生成器的种子,并返回一个在统计上独立的浮点结果,因为 RAND(@int) 和 RAND(@int+1) …

sql-server-2005 sql-server random sql-server-2014

3
推荐指数
1
解决办法
3227
查看次数

快速从 PostgreSQL 表中获取真正的 RANDOM 行

我以前总是这样做:

SELECT column FROM table ORDER BY random() LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

对于大表,这令人难以忍受,慢得令人难以置信,以至于在实践中毫无用处。这就是为什么我开始寻找更有效的方法。人们推荐:

SELECT column FROM table TABLESAMPLE BERNOULLI(1) LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

虽然速度很快,但它也提供了毫无价值的随机性。它似乎总是选择相同的该死的记录,所以这也毫无价值。

我也试过:

SELECT column FROM table TABLESAMPLE BERNOULLI(100) LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

它提供了更糟糕的随机性。它每次都选择相同的几条记录。这是完全没有价值的。我需要实际的随机性。

为什么仅选择随机记录显然如此困难?为什么它必须抓取每条记录然后对它们进行排序(在第一种情况下)?为什么“TABLESAMPLE”版本总是抓取相同的愚蠢记录?为什么它们不是随机的?当它一遍又一遍地选择相同的几条记录时,谁会想要使用这个“BERNOULLI”的东西?我不敢相信,经过这么多年,我仍然在询问随机记录……这是最基本的查询之一。

用于从 PG 中的表中抓取随机记录的实际命令是什么,该命令并没有慢到需要几秒钟才能获得一个体面大小的表?

postgresql random select postgresql-performance

3
推荐指数
2
解决办法
3397
查看次数

用另一个表 B 的随机 ID 填充表 A

我有两个表,我想用随机值的表的 ID更新GebruikerID表中的列。TopicGebruiker

你还必须知道以下几点:

  • Topic.GebruikerID引用Gebruiker.ID.
  • 并非每个 ID 都在两个表中使用。
  • 必须生成的随机数存在于表Gebruiker(列ID)中,必须更新到表Topic(列GebruikerID)中。
  • 我在快速版中使用 SQL 服务器。

这里有一些图片。

  • 表之间的关系

  • Gebruiker-table的 ID

sql-server random

2
推荐指数
1
解决办法
6155
查看次数

PostgreSQL。生成随机整数集

使用此命令,我可以生成 1 和 200,000 之间的 16384 个随机整数。

SELECT generate_series (1,16384),(random()*200000)::int AS id
Run Code Online (Sandbox Code Playgroud)

我想生成 10 组这样的整数。每个集合必须有一个整数标识符,类似于:

1 | 135

1 | 1023

...第一组 16384 个随机数结束

2 | 15672

2 | 258732

... 第二组 16384 个随机数结束

这可以通过 SQL 命令实现,还是我应该为此编写一个函数?

postgresql random postgresql-9.3

1
推荐指数
1
解决办法
9150
查看次数

生成唯一的随机字符串,用作 PostgreSQL 中新创建的行内字段的值

我有这个生成随机字符串的语句:

SELECT string_agg (substr('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', ceil (random() * 62)::integer, 1), '')
FROM generate_series(1, 20);
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何在函数内实现此功能,该函数会将上述语句的值自动分配给url_prefix创建新记录时命名的字段(on INSERT's)?

postgresql stored-procedures insert random functions

1
推荐指数
1
解决办法
8495
查看次数

SQL TOP 语句,如何确保它是“随机的”?

我在学习 SQL 时遇到了一个 TOP 语句。IE

SELECT TOP 2 * FROM Persons 
Run Code Online (Sandbox Code Playgroud)

从表 Persons 中最多选择 2 行。

但是,如果我出于统计原因使用它,我希望这样的过程是随机的:即独立于表中的时间和顺序。

我的问题是:

  1. 如何确保 TOP 语句是完全“随机的”(它的选择不是有序的)?此外,如何确保针对某些变量(即年龄)对 TOP 语句进行排序

  2. TOP 语句实际上是如何工作的?

random

0
推荐指数
1
解决办法
368
查看次数

在子查询中生成随机行顺序

我知道这里(和这里)的其他答案说要订购newid()。但是,如果我top 1在子查询中进行选择- 以便在外部查询中的每行生成随机选择 - 每次使用都会newid()产生相同的结果。

那是:

select *,
    (select top 1 [value] from lookupTable where [code] = 'TEST' order by newid())
from myTable
Run Code Online (Sandbox Code Playgroud)

...lookupTable.value在从 返回的每一行上产生相同的值myTable

我正在尝试从lookupTable. 那个表只有几行。在现实世界中,我想要update myTable set someColumn = ......一个随机lookupTable.value值,这样每一行都myTable设置了一个随机值,而不是生成一个随机值并将其分配给所有行。

sql-server random sql-server-2016

0
推荐指数
1
解决办法
383
查看次数