【问题标题】:MySQL Combine Query Results From Multiple TablesMySQL 合并来自多个表的查询结果
【发布时间】:2013-08-24 01:59:00
【问题描述】:

假设我有两个表:shares 和 follow。目前,我有一个查询,它返回按日期排序的最新股票,限制为 25 个结果。我想做的是从关注和分享中查询,返回最新的 25 条结果。但是,我不确定如何执行此操作。

我对股票的查询是这样的:

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、name 等?这甚至可能吗?

【问题讨论】:

  • 两张表有关系吗?

标签: php mysql sql pdo


【解决方案1】:

认为你正在寻找一个工会......

    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;

您可能需要根据需要调整别名。

【讨论】:

  • 这两个内部查询应该合并,再利用,并且限制在前二十五个。
  • 如果您确定结果之间没有交集,请使用 UNION ALL。有了这个,您将能够提高查询性能。
猜你喜欢
  • 1970-01-01
  • 2019-04-20
  • 1970-01-01
  • 2012-04-23
  • 1970-01-01
  • 2018-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多