MySQL 多表根据字段值不同 Inner Join 并分页
可以使用 'UNION ALL' 将多个 'SELECT' 查询结果合并起来,然后再进行分页。
例如,有两张表 'T1' 和 'T2',它们的结构相同,都有 'id' 和 'name' 两个字段,且 'id' 的取值范围不同。现在需要根据 'id' 的值不同,分别从 'T1' 和 'T2' 中查询数据,并按照 'name' 字段进行分页。
可以使用如下 SQL 语句:
SELECT id, name FROM (
SELECT id, name FROM T1 WHERE id = 1
UNION ALL
SELECT id, name FROM T2 WHERE id = 2
) AS T
ORDER BY name
LIMIT 10 OFFSET 0;
其中,'UNION ALL' 将两个查询结果合并起来,并使用 'AS' 子句给结果集起别名 'T'。然后再对结果集进行排序和分页,这里的 'LIMIT' 和 'OFFSET' 参数可以根据需求进行调整。
需要注意的是,'UNION ALL' 会将所有查询结果合并起来,如果两个表中有相同的数据,会出现重复。如果不想出现重复数据,可以使用 'UNION' 代替 'UNION ALL',但这会导致查询性能下降。
原文地址: https://www.cveoy.top/t/topic/owN6 著作权归作者所有。请勿转载和采集!