如何通过在mysql上过滤多个列来限制多个数字?

ecbunoof  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(297)

我想从数据库中得到4个不同类别的50个问题。我想从4个不同的类别每个不同的问题数量;我的结果集必须包含第一类12个问题、第二类20个问题、第三类10个问题和第四类8个问题。我的问题表上总共有50个问题。我用了极限函数。但是当我有不止一个专栏的时候,我很困惑。
这是我的table:

| category_id| question-text| Col3 |
 |------------|--------------|------|
 |    1       |  sample      |  ieb |
 |    2       |  sample      |  aem |
 |    3       |  sample      |  atd |
 |    4       |  sample      |  oui |
 |    1       |  sample      |  ieb |
 |    2       |  sample      |  aem |
 |    3       |  sample      |  atd |
 |    4       |  sample      |  oui |
 |    1       |  sample      |  ieb |
 |    2       |  sample      |  aem |
 |    3       |  sample      |  atd |
 |    4       |  sample      |  oui |
 |    1       |  sample      |  ieb |
 |    2       |  sample      |  aem |
 |    3       |  sample      |  atd |
 |    4       |  sample      |  oui |

我需要这个结果:1类中的5个问题。第2类中的3个问题。第3类中的2个问题。第4类中的7个问题。

67up9zun

67up9zun1#

你可以使用 UNION 查询以立即获取所有问题:

(SELECT * FROM question WHERE categori_id=1 ORDER BY RAND() LIMIT 12)
UNION
(SELECT * FROM question WHERE categori_id=2 ORDER BY RAND() LIMIT 20)
UNION
(SELECT * FROM question WHERE categori_id=3 ORDER BY RAND() LIMIT 10)
UNION
(SELECT * FROM question WHERE categori_id=4 ORDER BY RAND() LIMIT 8)

相关问题