【发布时间】: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 中的所有行合并。这如何实现?
【问题讨论】:
我需要查询十几个表并返回所有这些表的 UNION ALL。所有这些表都具有相同的列名。此查询返回的行数最多应为 100。
`SELECT column1, column2 FROM table1 UNION ALL SELECT column1, column2 FROM table2 LIMIT 100;`
上述查询导致 table2 中的 100 行与 table1 中的所有行合并。这如何实现?
【问题讨论】:
试试:
SELECT column1, column2 FROM (
SELECT column1, column2
FROM table1
UNION ALL
SELECT column1, column2
FROM table2
) as resutl_table
LIMIT 100;
【讨论】:
您希望将限制应用于所有表,因此您将查询“包装”在基本查询周围。然后,包装的查询可以将行计数限制应用于作为单个结果集的所有表。
SELECT * FROM ( <your existing query> ) LIMIT 100;
如果需要,您也可以申请订单。
SELECT * FROM ( <your existing query> ) ORDER BY column1 LIMIT 100
【讨论】:
select * from (
SELECT column1, column2 FROM table1
UNION ALL
SELECT column1, column2 FROM table2 ) as t
LIMIT 100
【讨论】:
SELECT * FROM (
SELECT column1, column2
FROM table1
UNION ALL
SELECT column1, column2
FROM table2
) as result_set LIMIT 100
【讨论】: