我在同一个数据库中有来自不同表的多个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”:
结果 - 从表中选择的字段 - 要排序的字段最大 结果 - 从可能不同的表中选择的字段 - 要排序的字段是下一个最大的 结果 - 从可能不同的表格表中选择的字段 - 要排序的字段是第三大的 等等
我看到很多简单的组合语句,但没有一个像这样。
任何帮助都会非常感激。
答案 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