结合多个高级mysql选择查询的最佳方法

时间:2011-06-03 06:20:14

标签: mysql multiple-select multiple-select-query

我在同一个数据库中有来自不同表的多个select语句。我正在使用多个单独的查询,然后加载到我的数组并进行排序(再次,在查询中排序后)。

我想合并为一个语句,以加快结果,并使“加载更多”更容易(见下)。

每个查询都使用SELECT,LEFT JOIN,WHERE和ORDER BY命令,这些命令对于每个表都不相同。

我可能不需要在每个语句中使用order by,但我希望最终结果最终由表示时间的字段(不一定是所有表中的相同字段名称)排序。

我想将总查询结果限制为一个数字,在我的情况下为100。

然后我使用循环结果,对于每一行,我测试OBJECTNAME_ID(即; comment_id,event_id,upload_id)是否设置,然后是LOAD_WHATEVER_OBJECT,它接受行并将数据推送到数组中。

之后我不必对数组进行排序,因为它是通过mysql按顺序加载的。

稍后在应用程序中,我将通过跳过前100个,200个或任何页面* 100来“加载更多”,并使用相同的查询再次限制100个。

数据库的最终结果将首先看起来像“this”:

结果 - 从表中选择的字段 - 要排序的字段最大 结果 - 从可能不同的表中选择的字段 - 要排序的字段是下一个最大的 结果 - 从可能不同的表格表中选择的字段 - 要排序的字段是第三大的 等等

我看到很多简单的组合语句,但没有一个像这样。

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:2)

最简单的方法可能是UNION(http://dev.mysql.com/doc/refman/5.0/en/union.html):

(SELECT a,b,c FROM t1)
UNION
(SELECT d AS a, e AS b, f AS c FROM t2)
ORDER BY a DESC