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

时间:2018-12-22 21:31:42

标签: php mysql sql

我想从数据库中获得4个不同类别的50个问题。我想要从4个不同类别中选择不同数量的问题;我的结果集必须包含第一类12个问题,第二类20个问题,第三类10和第四类8个问题。我的问题表中总共有50个问题。 我为此使用了 LIMIT 函数。但是当我有不止一列的时候,我很困惑。

这是我的桌子:

 | 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个问题。

1 个答案:

答案 0 :(得分:1)

您可以使用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)