MySQL三个查询:根据先前查询的结果更改LIMIT

时间:2014-04-13 10:42:44

标签: mysql sql

在这种情况下,我无法弄清楚如何更有效地实现MySQL查询:

表1

id | reg_id | lang_id |
---|--------|---------|
 1 |    9   |    3    |
---+--------+---------|
 2 |    7   |    8    |
---+--------+---------|
 3 |    9   |    3    |
---+--------+---------|
 4 |    1   |    1    |
---+--------+---------|
 5 |    3   |    8    |
---+--------+---------|
 6 |    7   |    22   |
---+--------+---------|
...more

我需要在三个不同的WHERE条件下从上表中总共获取12行,每个条件有4行,例如:

SELECT id FROM table1 WHERE reg_id = 9 AND lang_id = 3 LIMIT 4
SELECT id FROM table1 WHERE reg_id = 3 AND lang_id = 8 LIMIT 4
SELECT id FROM table1 WHERE reg_id = 1 AND lang_id = 1 LIMIT 4

这是我感到困惑的地方:

所有12行都需要填充上述三个查询的数据,每个查询4条记录。

但是如果第一个查询只返回2个记录,则其缺失的行需要填充第二个查询的记录,因此,在这种情况下,第二个查询将需要返回6行。但是如果第二个查询只有3个记录,那么它的空间需要填充第3个查询的记录,所以在这种情况下,第3个查询需要返回7行。

所以总共需要填充12行。

我可以通过来回查看数据库,计算行和查询下一组数据来处理PHP语句,但它对我来说效率不高,所以我试图弄清楚是否逻辑可以通过子查询或其他东西在查询中完成。因此,单个查询可以返回所需的数据。

有人可以提出建议吗?

0 个答案:

没有答案