【问题标题】:Selecting from multiple MySQL tables从多个 MySQL 表中选择
【发布时间】:2010-10-01 02:57:14
【问题描述】:

我有几张表,它们的字段相似但不完全相同。

他们拥有的相同字段是描述(文本字段)和修改(unixtime)

我想根据 unixtime 从这些表中选择最后修改的项目。我不能使用 UNION,因为表不一样并且多表选择超时。

我一直在寻找这个但没有运气,要么人们正在使用 JOINS 要么 SELECT A., B. FROM table A, table B

【问题讨论】:

    标签: mysql select


    【解决方案1】:

    如果您的选择次数过多,请尝试在“已修改”上添加 desc 索引,并在选择上使用限制以仅返回一个(最后)行。

    那么你可以:

    SELECT 
        A,B,C,D, desc, modified 
    FROM 
       TABLEA
    UNION ALL 
    SELECT 
        CAST(E as <A type>), CAST(F AS <B type>) ..., desc, modified   
    FROM 
       TABLE B  
    

    【讨论】:

      【解决方案2】:

      试试这个:

      SELECT
          IF (A.modified > B.modified, A.modified, B.modified) AS modified,
          IF (A.modified > B.modified, A.description, B.description) AS description,
      FROM
          (SELECT description, modified FROM A ORDER BY modified DESC LIMIT 1) AS A,
          (SELECT description, modified FROM B ORDER BY modified DESC LIMIT 1) AS B
      LIMIT 1
      

      但是,这与只执行两个查询几乎相同(只是更复杂),所以我不推荐它。

      【讨论】:

        【解决方案3】:

        它们有什么不同? 也许你可以把常用字段拿出来:

        select t1.name1 as name from table1
        union
        select t2.name2 as name from table2
        

        【讨论】:

        • 谢谢,正是我需要的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-08-08
        • 2011-11-25
        • 2017-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多