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

选择随机行,但一列中没有重复的值

师博
2023-03-14
问题内容

这是从单个表中进行的简单选择。目的是选择四个随机乘积,从x个类别的每一个类别中选择一个,并具有几个“ where”限制。我已经试过了:

  SELECT pName, 
         pID 
    from products 
   WHERE pDisplay=1 
     AND pFeatured=1 
GROUP BY pCategory 
ORDER BY RAND() 
   LIMIT 0,4

这种类型的作品,但始终会返回任何给定类别的相同产品。我想更改显示的产品,同时仍然只显示任何给定类别的单个产品。

我也尝试过:

  SELECT DISTINCT(pCategory) 
         pName, 
         pID 
    from products 
   WHERE pDisplay=1 
     AND pFeatured=1 
ORDER BY RAND() 
   LIMIT 0,4

我在想,也许它需要两个选择-第一个选择一个随机的4个类别,第二个选择从每个类别中选择一个随机行,但是a。不知道该怎么做,以及b。如果可能,希望使用单个查询。


问题答案:

不太好,但是我认为这是在MySQL中可以做的最好的事情。

SELECT p.pID, p.pName
   FROM (
       SELECT (
           SELECT pID FROM products
           WHERE pCategory=p.pCategory AND pDisplay=1 AND pFeatured=1
           ORDER BY rand() LIMIT 1
           ) AS pID
       FROM products p
       WHERE pDisplay=1 AND pFeatured=1
       GROUP BY pCategory
       ORDER BY rand() LIMIT 4
       ) c
   JOIN products p ON c.pID = p.pID

(karim79的查询可以返回同一类别的多个产品,甚至可能返回pDisplay = 0或pFeatured =
0的产品。rexem的查询处理pDisplay / pFeatures问题,但也可以返回同一类别的多个产品)



 类似资料:
  • 问题内容: 在mysql表中,我有: ID,名称,城市,日期,状态 我想从“信息”中选择所有名称 好吧,结果是它返回了所有条目。我想回显所有没有重复的条目。 说:在原始的“名称”下,我们已经将名称“ John”插入了10次。 我只想回声一次。这可能吗? 问题答案: 很简单: SQL关键字可以解决问题。

  • 我有1个数据帧,我想选择所有没有重复的行 我的df: 我的输出应该是: 我正在使用熊猫数据框 有什么建议吗?

  • 我正在编写一个二十一点游戏。我有一个所有可用牌类型的枚举。交易时,我想使用Random从枚举中随机选择一张牌给玩家。如何使用整数值对应枚举值?或者,我如何为该枚举的变量随机选择枚举值? 纸牌Enun:

  • 我有一个表格结构 如何使用条件?我尝试使用这个,但结果是

  • 问题内容: 该代码从一组预设颜色中选择一种随机颜色。如何使同一颜色不会被多次拾取? 问题答案: 创建一个索引数组。从数组中删除索引之一,然后使用它来获取颜色。 像这样: 上面的代码创建一个数组。该函数看是否为空。如果是,则使用0到的索引值填充它。 然后,它在数组中选择一个随机索引,从数组中的该索引处删除值,然后使用它从中获取并返回一个对象。(它不会从中删除对象。它使用间接操作,并从indexsAr

  • 我使用了这段代码来随机化1000000个数字而不重复。这是我目前所掌握的。 这种方法太慢了,你能告诉我如何更有效地完成这项工作吗?我感谢所有答复。问候