gpt4 book ai didi

mysql - SQL - 选择每个 IN 参数的相同数量的结果

转载 作者:行者123 更新时间:2023-11-29 07:37:54 26 4
gpt4 key购买 nike

我正在构建一个问答游戏应用程序,我想改进一些查询。

当我启动游戏时,我必须从数据库中检索一些随机问题。
现在,当游戏启动时,它有一个给定的类别,以及给定数量的要检索的数据。数据库中的问题曾经有一个 category_id 属性。

SELECT id 
FROM game_data
WHERE category_id = :category_id
ORDER BY rand()
LIMIT :size

但是在数据库中进行一些更改后,问题现在有一个属于某个类别的 subcategory_id。所以现在查询看起来像这样:

SELECT id 
FROM game_data
WHERE subcategory_id IN (:subcategory_id1, :subcategory_id2...)
ORDER BY rand()
LIMIT :size

现在我的问题如下:

我希望在查询中为每个子类别检索相同数量的问题。
例如,如果我要检索 18 个问题和 6 个不同的子类别,那么我必须为每个子类别检索 3 个问题(子类别的数量随类别而变化)。

我已经通过多个查询执行此操作,但尚未找到在单个查询中执行此操作的任何方法。

有人对此有想法吗? :)

最佳答案

使用联合方法,您可以使用类似的方法(此处显示两个类别)

SELECT * FROM (

SELECT id
FROM game_data
WHERE category_id = :category_id1
LIMIT :size

UNION ALL

SELECT id
FROM game_data
WHERE category_id = :category_id2
LIMIT :size
) q1

ORDER BY rand()

其中 :size 是您要显示的每个子类别的问题数。

关于mysql - SQL - 选择每个 IN 参数的相同数量的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30083223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com