我有一个SQL Server表,其中包含大约50,000行.我想随机选择大约5,000行.我想到了一个复杂的方法,创建一个带有"随机数"列的临时表,将我的表复制到其中,循环遍历临时表并用每个行更新RAND(),然后从该表中选择随机数列< 0.1.我正在寻找一种更简单的方法,如果可能的话,在一个声明中.
本文建议使用该NEWID()功能.这看起来很有希望,但我看不出如何可靠地选择一定比例的行.
有人曾经这样做过吗?有任何想法吗?
我正在使用MSSQL Server 2005.在我的数据库中,我有一个表"customerNames",它有两列"Id"和"Name"和大约.1,000个结果.
我正在创建一个功能,每次我必须随机挑选5个客户.任何人都可以告诉我如何创建一个查询,每次执行查询时将获得随机的5行(Id和Name)?
我在postgres中有一个包含数百万行的表.我在网上查了一下,发现了以下内容
SELECT myid FROM mytable ORDER BY RANDOM() LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
它工作,但它真的很慢......是否有另一种方式来进行查询,或者直接选择随机行而不读取所有表格?顺便说一下'myid'是一个整数,但它可以是一个空字段.
谢谢
我找到了一种从这篇文章中的表中选择随机行的方法.建议是使用以下查询:
SELECT * FROM employee ORDER BY RAND() LIMIT 1
Run Code Online (Sandbox Code Playgroud)
但是当我在MS SQL 2005中运行此查询时,我收到以下错误消息
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'LIMIT'.
Run Code Online (Sandbox Code Playgroud)
谁能告诉我我错在哪里?MS SQL不支持LIMIT吗?如果是这样,那我该怎么办呢?
我正在开发一个测验网站,我有一个存储所有问题的数据库.有不同类型的测验,如数学,科学,历史等.所有问题都存储在一个表中.
我的问题表看起来像这样:
questions ( qno(int) ,type(int), question, .... ,... )
Run Code Online (Sandbox Code Playgroud)
qno是主键,type用于跟踪测验类型:
if type = 1 (math)
type = 2(science)
Run Code Online (Sandbox Code Playgroud)
现在,我想为每种类型的测试选择一些随机问题.例如,我可能只想为数学测试选择一些随机的20个问题.
MySQL有某种方法可以选择随机行吗?
可能重复:
如何在SQL中请求随机行?
这是正确的方法吗?
$query = 'SELECT * FROM gameids ORDER BY timestamp RAND LIMIT 1';
Run Code Online (Sandbox Code Playgroud) 我有两张桌子.Table 1有大约80行,Table 2大约有1000万.
我想Table 2用随机行更新所有行Table 1.我不希望所有行都有相同的行.是否可以更新Table 2并随机选择要更新的每一行的值?
这是我尝试过的,但它在每一行中都有相同的值.
update member_info_test
set hostessid = (SELECT TOP 1 hostessId FROM hostess_test ORDER BY NEWID())
Run Code Online (Sandbox Code Playgroud)
**编辑
我们如何组合如何在SQL中请求随机行?和SQL Server 2005中的多个随机值,使用单个纯SQL查询选择N个随机行?理想情况下,我希望尽可能避免使用存储过程.这甚至可能吗?
澄清: