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

如何使用WHERE id IN(1,2,3,4)获得均匀分布

荣声
2023-03-14
问题内容

我有一个查询,该查询从users表中拉出喜欢特定对象的用户。等级存储在ratings表格中。到目前为止,我提出的查询看起来像这样:

SELECT user.id, user.name, user.image
  FROM users
LEFT JOIN ratings ON ratings.userid = user.id
WHERE rating.rating > 0
  AND rating.objectId IN (1,2,3,4)

LIMIT当每个ID仅需要3个左右的结果时,我希望能够在此查询上放一个,以避免返回所有结果。LIMIT 12例如,如果我仅放置一个,则可能会获得8个记录,每个记录具有一个ID,其他ID分别为1或2个记录-即ID分布不均。

有没有一种写此查询的方法来保证(假设一个对象被“点赞”了至少3次),对于列表中的每个ID,我都会得到三个结果?


问题答案:

通过设置行数丝毫变量,然后过滤结果以显示仅第1-3行应该起作用

SET @last_objectId = 0;
SET @count_objectId = 0;
SELECT id, name, image FROM (
SELECT
 user.id,
 user.name,
 user.image,
 @count_objectId := IF(@last_objectId = rating.objectId, @count_objectId, 0) + 1 AS rating_row_number,
 @last_objectId := rating.objectId
FROM users
LEFT JOIN ratings ON (ratings.userid = user.id)
WHERE
 rating.rating > 0 AND
 rating.objectId IN (1,2,3,4)
ORDER BY rating.objectId
) AS subquery WHERE rating_row_number <= 3;


 类似资料:
  • 0.1-0.2:********** 0.2-0.3:******** 0.3-0.4:********* 0.5-0.6:********* 0.6-0.7:********* 0.7-0.8:********* 0.4-0.5:********* 0.5-0.6:********* 0.6-0.7:********* 0.1-0.2:********* 0.2-0.3:********* 0.

  • 我们在AWS上运行16个节点kafka集群,每个节点是m4. xLargeEC2实例,具有2TB EBS(ST1)磁盘。Kafka版本0.10.1.0,目前我们有大约100个主题。一些繁忙的话题每天会有大约20亿个事件,一些低量的话题每天只有数千个。 我们的大多数主题在生成消息时使用UUID作为分区键,因此分区分布相当均匀。 我们有相当多的消费者使用消费群体从这个集群消费。每个使用者都有一个唯一的

  • 问题内容: 我知道如果我使用Java的Random生成器,并使用nextInt生成数字,则数字将均匀分布。但是,如果我使用2个Random实例,并使用两个Random类生成数字,会发生什么。数字是否会均匀分布? 问题答案: 每个实例生成的数字将均匀分布,因此,如果将两个实例生成的随机数序列组合在一起,则它们也应均匀分布。 请注意,即使结果分布是均匀的,您也可能要注意种子,以避免两个生成器的输出之间

  • 问题内容: 我的网页上有一个宽度固定的容器,其中包含用于登录的表单元素。在这些元素下方有一个提交按钮,忘记密码的链接等。 碰巧最后一个线元素需要的宽度比框提供的宽度少。如何均匀地传播它们?我不要 默认 | ABC | 将线居中 | ABC | 也不是桌子的布局 | A | B | C | 相反,我正在寻找实现的CSS方法: 那是: 在所有元素之间放置相等的空间 将整个内容居中,避免第一侧或最后侧

  • 我正在使用Kafka Producer和RoundRobin分区器来处理一个有12个分区的主题。 代码可在此处找到https://github.com/apache/kafka/blob/2.8/clients/src/main/java/org/apache/kafka/clients/producer/RoundRobinPartitioner.java 我面临的问题是,这个分区程序让分区正确

  • 问题内容: 我试图识别/创建一个函数(在Java中),该函数给我一个非均匀的分布式数字序列。如果我有一个函数说它将给我一个从到的随机数。 该函数最适合任何给定的函数,下面仅是我想要的示例。 但是,如果我们说函数将返回来自分布式的s nonuni。 我想例如说 约占所有案件的20%。 大约是所有情况的50%。 约占所有案件的20%。 大约是所有情况的10。 总之somting,给我一个数字,如正态分