2016-03-21 17 views
0

. Veri aynı sunucudaki iki veritabanından geliyor.İki alt seçeği tek bir sıralanabilir sonuca birleştirmek için iki alt seçmeyi farklı veri tabanları üzerinden birleştirin

Yani örneğin ben bu iki sorgu var:

Sorgu # 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 

Sorgu # 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 

Şimdi ben nasılsa bu iki seçer katılmak istiyorum bir sonuca ve sonuç üzerinde paginate için bir ofset ile LIMIT kullanın.

Bu mümkün mü? İki alt seçime katılmak için herhangi bir tablo yok. UNION ALL bu kullanarak

cevap

1

deneyin: İsteğe bağlı ALL olmadan

(
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 

, yinelenen girdileri elimden olur. Kopyalarımızı yönetebilirseniz buna ihtiyacınız olmayabilir.