MySQL 横向分表后,列表查询需要在每个分表中执行。可以使用 UNION 操作将多个分表的查询结果合并到一起,然后再进行排序、分页等操作。

例如,假设有两个分表 't1' 和 't2',它们的结构相同,都有 'id'、'name' 和 'age' 三个字段,现在需要查询它们的所有记录并按照 'age' 字段降序排序,可以使用以下 SQL:

SELECT id, name, age FROM t1
UNION ALL
SELECT id, name, age FROM t2
ORDER BY age DESC;

其中,UNION ALL 表示将两个查询结果合并,不去重;ORDER BY age DESC 表示按照 'age' 字段降序排序。

如果需要进行分页操作,可以在最外层的查询语句中使用 LIMIT 和 OFFSET 子句,例如:

SELECT id, name, age FROM (
  SELECT id, name, age FROM t1
  UNION ALL
  SELECT id, name, age FROM t2
  ORDER BY age DESC
) AS combined_tables
LIMIT 10 OFFSET 20;

其中,LIMIT 10 表示每页显示 10 条记录,OFFSET 20 表示从第 21 条记录开始显示。注意,在使用 UNION 操作时,需要将最外层的查询语句放在一个子查询中,以便于使用 LIMIT 和 OFFSET 子句。


原文地址: https://www.cveoy.top/t/topic/mtag 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录