2013-08-24 222 views
2

假設我有兩個表:share和follow。目前,我有一個查詢返回按日期排序的最新股票,限於25個結果。我想要做的是從後續和股票查詢,返回最新的25個結果。但是,我不確定如何做到這一點。MySQL將來自多個表的查詢結果結合起來

我的股份查詢,像這樣:

select s.id, s.name, s.sharer, s.type from shares s where id = :id order by s.date desc limit 0,25 

我的追隨者查詢,像這樣:

select f.follower, f.following, f.type from followers f where f.following = :id order by f.date desc limit 0,25 

我怎麼能結合這些,這樣,如果從追隨者表中選擇,它只需要追隨者,追隨者和類型,如果它從共享表中選擇,它只需要id,名稱等?這甚至有可能嗎?

+0

這兩張表是相關的嗎? –

回答

3

認爲你正在尋找一個工會 ...

select id, name, sharer, type from (  
    (select s.id as id, 
      s.name as name, 
      s.sharer as sharer, 
      s.type as type, 
      s.date as date 
     from shares s 
     where id = :id order by s.date desc) 
     UNION 
    (select f.follower as id, 
      f.following as name, 
      f.following as sharer, 
      f.type as type, 
      f.date as date 
     from followers f 
     where f.following = :id order by f.date desc)) 
     order by date desc limit 0,25; 

您可能需要爲需要調整的別名。

+0

這兩個內部查詢應該合併,採取行動,並限制在前二十五。 – zevra0

+0

你說得對。我正在刪除我的評論。 –

+0

如果您確定結果之間沒有交集,請使用UNION ALL。有了這個,你將能夠提高查詢性能。 – Pastor

相關問題