我有一个MySQL数据库表,用于存储照片的URL.我需要从特定类型的数据库中提取5个随机记录.我可以像这样拉5条记录:
SELECT Photos.*
FROM Photos
WHERE Photos.Type_ID = 4
LIMIT 5
Run Code Online (Sandbox Code Playgroud)
现在我需要帮助试图找出每次如何拉出不同的记录.如何从此结果集中检索随机行?
如何在纯 SQL 中请求随机列(或尽可能接近真正随机)?
我想从表中随机选择任何一列。
我在谷歌上搜索了很多关于这个。
请使用以下查询示例:
<cfquery name="Test" Datasource = "TestDB">
Select * from Table_Test
</cfquery>
Run Code Online (Sandbox Code Playgroud)
假设"Test"查询返回10行.我想在当前时间显示单行.
注意:我不想更改SQL语句.
我几天来一直在寻找这个问题的解决方案,找不到任何可以减少运行查询所需的时间.
我有2张桌子:
"product_db":
unique_id - [index]
image
url_title
status - [index]
"product_page"
id
product_unique_id - [index]
page_id - [index]
Run Code Online (Sandbox Code Playgroud)
我想要选择的是product_db中的随机图像,其中status ='Online'且产品必须在页面id = 3中
product_db有超过90,000个产品,product_page有超过150000行.
我现在使用的查询是:
SELECT image FROM product_db a,product_page b WHERE b.page_id = 3 AND a.status ='Online'AND a.unique_id = b.product_unique_id ORDER BY RAND()LIMIT 1
此查询大约需要2.3秒才能运行.这是一个很长的时间来加载网页.我尝试了一些其他查询,首先从page_id = 3返回product_page中的随机行,然后查询product_db(它确实减少了所需的时间)但问题是我无法比较产品是否在线"在线" .
我正试图从一张小桌子中随机抽取10%的样本.我以为我只是使用RAND()函数并选择随机数小于0.10的那些行:
SELECT * FROM SomeTable
WHERE SomeColumn='SomeCondition' AND
RAND() < 0.10
Run Code Online (Sandbox Code Playgroud)
但我很快发现RAND()总是返回相同的数字!让我想起这个xkcd卡通片.

没问题,RAND函数采用种子值.我将定期运行此查询,如果我在不同的日子运行它,我希望它给出不同的结果,所以我使用日期和唯一行ID的组合来播种它:
SELECT * FROM SomeTable
WHERE SomeColumn='SomeCondition' AND
RAND(CAST(GETDATE) AS INTEGER) + RowID) < 0.10
Run Code Online (Sandbox Code Playgroud)
我还是没有得到任何结果!当我显示RAND返回的随机数时,我发现它们都在一个狭窄的范围内.从RAND获取随机数似乎需要您使用随机种子.如果我首先有一个随机种子,我就不需要随机数!
我已经看到之前有关此问题的讨论:
他们没帮我.TABLESAMPLE在页面级别工作,这适用于大表,但不适用于小表,并且看起来它适用于WHERE子句之前.TOP with NEWID不起作用,因为我不知道我想要多少行.
任何人都有解决方案,或者至少有一个提示?
编辑:感谢AlexCuse提供适用于我的特定案例的解决方案.现在更大的问题,如何使兰德表现?
当我在我的表上有多个连接后运行一个select时,我有一个2列的输出,我想为返回的行集选择col1和col2的不同组合.
我运行的查询将是这样的:
select a.Col1,b.Col2 from a inner join b on b.Col4=a.Col3
Run Code Online (Sandbox Code Playgroud)
现在输出有点像这样
Col1 Col2
1 z
2 z
2 x
2 y
3 x
3 x
3 y
4 a
4 b
5 b
5 b
6 c
6 c
6 d
Run Code Online (Sandbox Code Playgroud)
现在我想输出应该是如下
1 z
2 y
3 x
4 a
5 b
6 d
Run Code Online (Sandbox Code Playgroud)
如果我随机选择第二列就可以了,因为我的查询输出就像一百万行而且我真的认为有一种情况我会让Col1和Col2输出相同,即使这是我可以编辑的值..
你可以帮我一样吗...我认为基本上col3需要是一个行号我猜,然后我需要在随机行号上选择两个cols基础..我不知道如何将它转换为SQL
考虑案例1a 1b 1c 1d 1e 2a 2b 2c 2d 2e现在group by将给出我所有这些结果,因为我想要1a和2d或1a和2b.任何这样的组合.
好吧,让我解释一下我的期望:
with rs as(
select a.Col1,b.Col2,rownumber() as rowNumber from a inner join …Run Code Online (Sandbox Code Playgroud) 可能重复:
如何在SQL中请求随机行?
目前使用:
$randomQuery = mysql_fetch_row(mysql_query("SELECT * FROM `table` WHERE `id` >= RAND() * (SELECT MAX(`id`) FROM `table`) LIMIT 1"));
Run Code Online (Sandbox Code Playgroud)
表结构:
id:
2
4
5
Run Code Online (Sandbox Code Playgroud)
我想确保它选择现有的行.例如,它的随机化功能不应该使用1或3.有没有办法在MySQL中这样做?
我的 SQL 语法有问题。我想添加一个介于 10000 和 99999 之间的随机电话号码。到目前为止我有这个查询,但我无法在 PHPMyAdmin 中运行它:
SELECT round(RAND()*99999) AS `NUM`
WHERE `NUM` NOT IN (SELECT `PHONE_NUMBER` FROM `PHONE`);
Run Code Online (Sandbox Code Playgroud)
这是错误:
1064 -第 1 行的“WHERE
NUMNOT IN (SELECTPHONE_NUMBERFROMPHONE)”附近的语法有问题
我的表有很多行,它们具有相同的列.我将这个专栏称为"喜欢".如果我使用"按喜好排序",那么具有相同"喜欢"的行将在它们被添加到数据库时被排序.我想要所有具有相同"喜欢"的行随机排序.我尝试了"ORDER BY likes,rand()",但所有内容都是随机排序的.我怎样才能做到这一点?
是否可以从此列表中检索2个随机数据?每当我执行T-sql代码时,它总是应该检索具有不同数据的2行.
CREATE TABLE Data
(
StartTime VARCHAR(5),
EndTime VARCHAR(5),
)
GO
INSERT INTO Data(StartTime,EndTime)
SELECT '10:00','12:00' UNION ALL
SELECT '13:30','16:00' UNION ALL
SELECT '14:00','15:00' UNION ALL
GO
Run Code Online (Sandbox Code Playgroud)
// Fullmetaloby
我有一个由连接组成的查询,输出大约有30,000多条记录.我想从这些记录中获取10个随机行,而不使用SQL命令ORDER BY rand().
我尝试循环遍历记录并将它们放入一个数组并随机播放(在洗牌后获得第10个)但它们需要大约8-12秒才能生成.我想不惜一切代价减少这个处理时间.
我将如何做到这一点?
我在 scala 上编写应用程序,并使用 slick for db 运行框架。我想从数据库端的表中选择随机行。像这样的东西:
val items = TableQuery[ItemTable]
val db = Database.forConfig("db.default")
def getRandom: Item = ???
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我当前的实现是选择全部作为列表并在 scala 代码上随机选择。
对于审计项目,需要为每个员工随机选择三个跟踪 ID,并且不能重复。想知道是否可以用 SQL 实现?
SQL Server 数据示例:
| 联系 | 跟踪号码 |
|---|---|
| 史密斯,玛丽 | TRK65152 |
| 史密斯,玛丽 | TRK74183 |
| 史密斯,玛丽 | TRK35154 |
| 史密斯,玛丽 | TRK23117 |
| 史密斯,玛丽 | TRK11889 |
| 琼斯、沃尔特 | TRK17364 |
| 琼斯、沃尔特 | TRK91736 |
| 琼斯、沃尔特 | TRK88234 |
| 琼斯、沃尔特 | TRK80012 |
| 琼斯、沃尔特 | TRK55874 |
| 托尼·威廉姆斯 | TRK58142 |
| 托尼·威廉姆斯 | TRK47336 |
| 托尼·威廉姆斯 | TRK13254 |
| 托尼·威廉姆斯 | TRK28596 |
| 托尼·威廉姆斯 | TRK33371 |
sql ×7
mysql ×6
random ×3
php ×2
sql-server ×2
t-sql ×2
arrays ×1
cfquery ×1
coldfusion ×1
scala ×1
selection ×1
slick ×1
sql-order-by ×1