对于像这样的简单SQL,
SELECT top 3 MyId FROM MyTable ORDER BY NEWID()
如何将行号添加到它们,以使行号变为1,2和3?
更新:
我以为我可以像上面那样简化我的问题,但是事实却更加复杂。所以这是一个完整的版本-我需要MyTable为每个人提供三个随机选择(来自),选择/行数分别为1、2和3,并且人与选择之间没有逻辑上的联系。
SELECT * FROM Person
LEFT JOIN (
SELECT top 3 MyId FROM MyTable ORDER BY NEWID()
) D ON 1=1
上面的SQL的问题是,
显然,应该添加1、2和3的拾取/行数
而且不明显的是,上面的SQL将给每个人相同的选择,而我需要给不同的人不同的选择
这是一个可以测试的SQL:
SELECT TOP 15 database_id, create_date, cs.name FROM sys.databases
CROSS apply (
SELECT top 3 Row_number()OVER(ORDER BY (SELECT NULL)) AS RowNo,*
FROM (SELECT top 3 name from sys.all_views ORDER BY NEWID()) T
) cs
所以,请帮忙。
注:这是不是关于MySQL BYT T-SQL作为它们的语法是不同的,因此该解决方案是不同的,以及。
添加Row_number到外部查询。试试这个
SELECT Row_number()OVER(ORDER BY (SELECT NULL)),*
FROM (SELECT TOP 3 MyId
FROM MyTable
ORDER BY Newid()) a
在逻辑上,TOP关键字在之后处理Select。在生成行号后,将随机提取3条记录。因此,您不应在原始查询中生成行号
更新
这可以通过实现CROSS APPLY。用表中的where有效列名替换cross apply子句中的列名Person
SELECT *
FROM Person p
CROSS apply (SELECT Row_number()OVER(ORDER BY (SELECT NULL)) rn,*
FROM (SELECT TOP 3 MyId
FROM MyTable
WHERE p.some_col = p.some_col -- Replace it with some column from person table
ORDER BY Newid())a) cs
它给我所有的数据,但我只需要3个随机数据。我有谷歌关于获得随机N没有数据,但为什么不为我工作?
问题内容: 如何使用Django获得两个不同的随机记录?我见过有关如何获得一个记录的问题,但我需要获得两个随机记录,而且它们必须有所不同。 问题答案: 如果你在ORM中指定了随机运算符,我很确定它将为你提供两个不同的随机结果,不是吗?
问题内容: 如何使用SQLAlchemy从表中选择一个或多个随机行? 问题答案: 这在很大程度上是特定于数据库的问题。 我知道PostgreSQL,SQLite,MySQL和Oracle可以通过随机函数进行排序,因此可以在SQLAlchemy中使用它: 接下来,您需要通过所需的记录数来限制查询(例如使用)。 请记住,至少在PostgreSQL中,选择随机记录会带来严重的性能问题。这是一篇很好的文章
本文向大家介绍php随机取mysql记录方法小结,包括了php随机取mysql记录方法小结的使用技巧和注意事项,需要的朋友参考一下 本文实例总结了php随机取mysql记录方法。分享给大家供大家参考。具体分析如下: 在php中要随机取mysql记录我们可以直接使用mysql_query来执行mysql中的select rand函数获取的数据并读出来,这里就来给大家简单介绍一下. 方法一,代码如下:
问题内容: 我不知道我只是在错误的地方还是在什么地方找东西,但是活动记录是否具有检索随机对象的方法? 就像是? 或者…好吧,因为这种方法不存在,所以有一些惊人的“ Rails Way”来做到这一点,我似乎总是很冗长。我也使用mysql。 问题答案: 在Rails 4中,我将扩展: 这样,您可以使用范围:
我试图从Laravel5.7中的表中获取随机数目的行,但找不到任何解决方案。我有用 它工作正常。但是,我需要应用它与