从多个数据库中使用LIMIT进行MYSQL SELECT,并按以下顺序排序

时间:2019-05-08 10:58:41

标签: mysql

我有一个使用多个MYSQL数据库的应用程序,结果被合并到一个数据库中,但是在使用我的查询LIMIT时出现问题。

我有:

MYSQL 1-view_users

MYSQL 2-view_users

MYSQL 3-view_users

查询:

SELECT * FROM `view_users` 
ORDER BY `date` DESC LIMIT 0, 25

我得到的结果是正确的:

MYSQL 1-返回25行

MYSQL 2-返回25行

MYSQL 3-返回25行

我想要实现的结果是只得到25行而不是75行,因为我的分页中断了。

所需结果: MYSQL 1,MYSQL 2,MYSQL 3-总共返回25行

在MYSQL级别上能否实现这一目标?

2 个答案:

答案 0 :(得分:3)

如果不同的数据库位于同一服务器上,则可以使用union

  SELECT * 
  FROM db1.`view_users` 
  UNION 
  SELECT * 
  FROM db2.`view_users` 
  UNION 
  SELECT * 
  FROM db2.`view_users` 
  ORDER BY `date` DESC LIMIT 0, 25

答案 1 :(得分:0)

据我所知,Mysql不支持您的要求。

但是有两种解决方案:

  • 1:多个Mysql数据库按顺序存储数据:这样您就可以获取想要的排序数据。
  • 2:如果数据无序存储:您从三个数据库中每获得25行,则必须对25 * 3 = 75行数据进行排名,并获得返回的25行数据。但是需要注意的是,如果要获取25-50行数据,还必须从三个数据库和等级中获取50行数据,这非常复杂。