当前位置: 首页 > 面试题库 >

如何选择带有group by子句的随机行?

和柏
2023-03-14
问题内容

我有下表

SQLFiddle

我试图做的是选择三个随机图像,但是要确保没有两个图像具有相同的对象,我试图做的是将GROUP BY和ORDER BY
rand()一起执行,但是失败了。它总是给我cat1.jpg,dog1.jpg,box1.jpg(所有路径以1结尾而不是其他路径结尾的图像)

小提琴包括我运行的查询及其运行方式。


问题答案:

您需要的是一个随机聚合函数。通常,当前的RDBMS中没有此类功能。

有人问过类似的问题。

因此,基本思想是将元素随机排序,然后进行分组,然后为每个组选择每个组的第一行。如果我们修改链接上提供的答案之一,则会得到此答案。

select object_id, name, image_path
from
  (SELECT images.image_path AS image_path, objects.id AS object_id, objects.name
  FROM objects LEFT JOIN images ON images.object_id = objects.id
  ORDER BY RAND()) as z
group by z.object_id, z.name


 类似资料:
  • 问题内容: 我有一个网站,人们可以在上面投票。向用户显示了4辆汽车,他/她可以对他们最喜欢的汽车进行投票。 该表具有以下重要列: 目前,我对所有car_types使用了一个映射表,该表具有没有间隙的PK。我选择映射表的最大ID并创建4个随机数(PHP),然后从映射中选择那些行并获得相应的car_id。我使用这些数字从表中选择汽车。 问题 在于,后来添加到数据库中的汽车与先前添加的汽车获得相同分数的

  • 问题内容: 这是我的表结构。在这里我想随机选择4行,所以我在查询中使用RAND()mysql函数,我的问题是 如何配对到行。我的意思是,我想始终选择pid 2和3。我需要按以下顺序。 我不想打破对A2 A3 或或或等 我使用下面的查询,但对我不起作用 问题答案: turbod与他的答案很接近,他只是随机排序,当您似乎想要按pid排序时,在获得所需的随机行以及与A2和A3有关的行之后:

  • 问题内容: 我正在使用MSSQL Server2005。在我的数据库中,我有一个表“ customerNames”,其中有两列“ Id”和“ Name”以及大约。1,000个结果。 我正在创建一个功能,每次必须随机选择5个客户。谁能告诉我如何创建一个查询,该查询每次执行查询时都会随机获得5行(Id和Name)? 问题答案: 也就是说,似乎每个人都可以访问此页面,以获取对您的问题的更一般的答案: 在

  • 问题内容: 这是我在数据库中查询一些单词的方法 我正在使用mysql,我想获得符合条件的随机行,我在查询中使用rand()的顺序。 我发现这个类似的问题基本上表明,由于在理论中不支持ORDER BY RAND,因此可以将主键随机化。但是,在我的情况下无法做到这一点,因为我有一个搜索条件和一个where子句,因此并非每个主键都可以满足该条件。 我还找到了一个代码段,建议您使用OFFSET来随机化行,

  • 我有代码,在用户提供的非数字值的情况下,总是会要求给出相同的消息:。 我希望我的应用程序能够从其他几个类似的应用程序中随机选取该消息 这是我当前的代码。我应该如何改变它?

  • 问题内容: 我有一种方法,它使用随机样本来近似计算。这种方法被称为数百万次,因此非常重要的是选择随机数的过程必须高效。 我不确定java到底有多快,但是我的程序似乎并没有像我期望的那样受益。 选择随机数时,我将执行以下操作(半伪代码): 现在,这显然具有最坏的最坏情况下的运行时间,因为理论上随机函数可以为永恒添加重复的数字,从而永远停留在while循环中。但是,数字是从{0..45}中选择的,因此