Предельное количество строк в MySQL, возвращаемых оператором Union All - PullRequest
1 голос
/ 07 апреля 2011

Мне нужно запросить дюжину таблиц и вернуть UNION ALL всех этих таблиц. Все эти таблицы имеют одинаковые имена столбцов. Число строк, возвращаемых этим запросом, должно быть не более 100.

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

Приведенный выше запрос приводит к объединению 100 строк из таблицы2 со всеми строками из таблицы1. Как это можно сделать?

Ответы [ 4 ]

5 голосов
/ 07 апреля 2011

Попробуйте:

SELECT column1, column2 FROM ( 
  SELECT column1, column2 
  FROM table1 
 UNION ALL 
  SELECT column1, column2 
  FROM table2
) as resutl_table 
LIMIT 100;
2 голосов
/ 07 апреля 2011

Вы хотите, чтобы ограничение применялось ко всем таблицам, поэтому вы «оборачиваете» запрос вокруг своего базового запроса.Обернутый запрос может затем применить ограничение числа строк ко всем таблицам, взятым как один результирующий набор.

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

Вы также можете применить порядок, если хотите.

SELECT * FROM ( <your existing query> ) ORDER BY column1 LIMIT 100
1 голос
/ 07 апреля 2011
SELECT * FROM  (
            SELECT column1, column2 
            FROM table1 
              UNION ALL 
            SELECT column1, column2 
            FROM table2 
            ) as result_set LIMIT 100 
1 голос
/ 07 апреля 2011
select * from (
SELECT column1, column2 FROM table1 
UNION ALL 
SELECT column1, column2 FROM table2 ) as t 
LIMIT 100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...