我在同一个数据库的不同表中有多个select语句。我使用了多个单独的查询,然后加载到我的数组并进行排序(再次,在查询中排序之后)。
我想合并成一个声明,以加快结果,使其更容易“加载更多”(见底部)。
每个查询都使用select、left join、where和order by命令,这些命令对每个表都不相同。
我可能不需要在每个语句中使用order by,但我希望最终结果最终由一个表示时间的字段(不一定是所有表中的相同字段名)排序。
我希望将查询结果总数限制为一个数字,在我的例子中是100。
然后我使用一个循环结果,并对每一行测试objectname_id(即comment_id,event_id,upload_id)是否被设置,然后加载获取该行并将数据推送到数组中的任何对象。
之后我不必对数组进行排序,因为它是通过mysql按顺序加载的。
稍后在应用程序中,我将跳过前100、200或任何页面*100来“加载更多”,并使用相同的查询再次限制100。
数据库的最终结果将pref显示为“this”:
结果-从表中选择的字段-要排序的字段是最大的
结果-从可能不同的表中选择的字段-要排序的字段是下一个最大的
结果-从可能不同的表中选择的字段-要排序的字段是第三大字段
等等,等等
我看到了很多简单的组合语句,但没有什么是这样的。
任何帮助都将不胜感激。
最佳答案
最简单的方法可能是在这里合并(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
关于mysql - 结合多个高级mysql选择查询的最佳方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6223655/