3

我有来自同一数据库上不同表的多个选择语句。我正在使用多个单独的查询,然后加载到我的数组并排序(同样,在查询中排序之后)。

我想合并到一个语句中以加快结果并使其更容易“加载更多”(见底部)。

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

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

我想将总查询结果限制为一个数字,在我的例子中是 100。

然后,我使用循环遍历结果,并为每一行测试是否设置了 OBJECTNAME_ID(即;comment_id、event_id、upload_id),然后 LOAD_WHATEVER_OBJECT 获取该行并将数据推送到数组中。

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

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

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

RESULT - 从表中选择的字段 - 要排序的字段是最大的 RESULT - 从可能不同的表中选择的字段 - 要排序的字段是下一个最好的 RESULT - 从可能不同的表中选择的字段 - 要排序的字段是第三大等, ETC

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

任何帮助将不胜感激。

4

1 回答 1

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
于 2011-06-03T06:32:34.143 回答