【问题标题】:MySQL Limit Number Of Rows Returned By Union All StatementMySQL 限制 Union All 语句返回的行数
【发布时间】:2011-04-07 12:02:24
【问题描述】:

我需要查询十几个表并返回所有这些表的 UNION ALL。所有这些表都具有相同的列名。此查询返回的行数最多应为 100。

`SELECT column1, column2 FROM table1 UNION ALL SELECT column1, column2 FROM table2 LIMIT 100;`

上述查询导致 table2 中的 100 行与 table1 中的所有行合并。这如何实现?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    试试:

    SELECT column1, column2 FROM ( 
      SELECT column1, column2 
      FROM table1 
     UNION ALL 
      SELECT column1, column2 
      FROM table2
    ) as resutl_table 
    LIMIT 100;
    

    【讨论】:

    • 使用:SELECT column1, column2 FROM (SELECT column1, column2 FROM table1 UNION ALL SELECT column1, column2 FROM table2) DerivedTableName LIMIT 100;作品。在派生表定义后为派生表命名即可产生结果。
    • 答案中的示例需要 sub_query 的别名。
    【解决方案2】:

    您希望将限制应用于所有表,因此您将查询“包装”在基本查询周围。然后,包装的查询可以将行计数限制应用于作为单个结果集的所有表。

    SELECT * FROM ( <your existing query> ) LIMIT 100;
    

    如果需要,您也可以申请订单。

    SELECT * FROM ( <your existing query> ) ORDER BY column1 LIMIT 100
    

    【讨论】:

      【解决方案3】:
      select * from (
      SELECT column1, column2 FROM table1 
      UNION ALL 
      SELECT column1, column2 FROM table2 ) as t 
      LIMIT 100
      

      【讨论】:

        【解决方案4】:
        SELECT * FROM  (
                    SELECT column1, column2 
                    FROM table1 
                      UNION ALL 
                    SELECT column1, column2 
                    FROM table2 
                    ) as result_set LIMIT 100 
        

        【讨论】:

          猜你喜欢
          • 2011-12-28
          • 2013-09-01
          • 1970-01-01
          • 2019-03-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多