在没有参考的情况下结合不同数据库的两个子选择
Combine two subselect over different databases without refference
我需要将两个子选择组合成一个 sortable 结果。数据来自同一台服务器上的两个数据库。
所以例如我有这两个查询:
查询#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 对结果进行分页。
这可能吗?
没有 table 连接两个子选择。
尝试使用 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
如果没有可选的 ALL
,重复的条目将被删除。如果你能统治我们的重复,你可能不需要它。
我需要将两个子选择组合成一个 sortable 结果。数据来自同一台服务器上的两个数据库。
所以例如我有这两个查询:
查询#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 对结果进行分页。
这可能吗? 没有 table 连接两个子选择。
尝试使用 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
如果没有可选的 ALL
,重复的条目将被删除。如果你能统治我们的重复,你可能不需要它。