0

我需要将两个子选择组合成一个可排序的结果。数据来自同一服务器上的两个数据库。

所以例如我有这两个查询:

查询 #1

SELECT foo.someId AS id, foo.name AS title, foo.tstmp AS timestamp, 'db1' as db
FROM `db1`.`table_foo` AS `foo`
ORDER BY foo.tstmp DESC

查询 #2

SELECT bar.that_id AS id, bar.object_title AS title, bar.timestamp AS timestamp, 'db2' as db
FROM `db2`.`bar` AS `bar`
ORDER BY bar.timestamp DESC

现在我想以某种方式将这两个选择加入一个结果,并使用带有偏移量的 LIMIT 对结果进行分页。

这甚至可能吗?没有表格可以加入两个子选择。

4

1 回答 1

1

尝试使用UNION ALL这个:

(
SELECT foo.someId AS id, foo.name AS title, foo.tstmp AS timestamp, 'db1' as db
FROM `db1`.`table_foo` AS `foo`
) UNION All (
SELECT bar.that_id AS id, bar.object_title AS title, bar.timestamp AS timestamp, 'db2' as db
FROM `db2`.`bar` AS `bar`
)
ORDER BY 3 DESC
LIMIT N,M

如果没有 optional ALL,重复的条目将被删除。如果您可以统治我们的重复项,您可能不需要它。

于 2016-03-21T13:09:04.900 回答