2011-04-07 90 views
1

我需要查詢一打表並返回所有這些表的UNION ALL。所有這些表具有相同的列名稱。此查詢返回的行數最多爲100。MySQL限制聯盟返回的行數所有語句

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

上面的查詢導致從表2 100行與從表1中的所有行被組合應。這如何實現?

回答

5

嘗試:

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

使用: SELECT列1,列2 FROM(SELECT列1,列2 FROM表1 UNION ALL SELECT列1,列2 FROM表2)DerivedTableName LIMIT 100; 的作品。派生表定義能夠產生結果後,爲派生表放置一個名稱。 – rsman 2011-04-07 12:10:03

+1

答案中的示例需要sub_query的別名。 – MatBailie 2011-04-07 12:12:21

1
select * from (
SELECT column1, column2 FROM table1 
UNION ALL 
SELECT column1, column2 FROM table2) as t 
LIMIT 100 
1
SELECT * FROM (
      SELECT column1, column2 
      FROM table1 
       UNION ALL 
      SELECT column1, column2 
      FROM table2 
      ) as result_set LIMIT 100 
2

你想限制適用於所有的表,所以你 「包裝」 周圍的基本查詢的查詢。包裝後的查詢可以將行計數限制應用於作爲單個結果集採用的所有表。

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

如果需要,您也可以應用訂單。

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