我有来自同一数据库上不同表的多个选择语句。我使用多个单独的查询,然后加载到我的数组并排序(同样,在查询中排序后)。
我想合并到一个语句中以加快结果速度并使其更容易“加载更多”(见底部)。
每个查询使用 SELECT、LEFT JOIN、WHERE 和 ORDER BY 命令,这些命令对于每个表都不相同。
我可能不需要在每个语句中进行排序,但我希望最终结果最终按表示时间的字段进行排序(不一定是所有表中的相同字段名称)。
我想将查询结果总数限制为一个数字,在我的例子中为 100。
然后,我使用循环遍历结果,并为每一行测试 OBJECTNAME_ID(即 comment_id、event_id、upload_id)是否设置,然后 LOAD_WHATEVER_OBJECT 获取该行并将数据推送到数组中。
之后我不必对数组进行排序,因为它是通过 mysql 按顺序加载的。
稍后在应用程序中,我将通过跳过前 100、200 或任何页面*100 来“加载更多”,并使用相同的查询再次限制 100。
数据库的最终结果将类似于“这样”:
结果 - 从表中选择的字段 - 用于排序的字段是最大的
结果 - 从可能不同的表中选择的字段 - 要排序的字段是下一个最大的
结果 - 从可能不同的表中选择的字段 - 要排序的字段是第三大的
等等,等等
我看到很多更简单的组合语句,但没有像这样的。
任何帮助将不胜感激。
最简单的方法可能是这里的 UNION (http://dev.mysql.com/doc/refman/5.0/en/union.html 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)