У меня есть оператор SELECT
, который возвращает записи из нескольких таблиц. Вот схема c:
select * from `tbl1` where `cond1`='something2'
UNION ALL
select * from `tbl2` where `cond2`='something2'
UNION ALL
-- etc
select * from `tblN` where `condN`='somethingN'
ORDER BY `sortColumn` ASC
LIMIT 0, 15
Мне также нужно знать общее количество всех строк. Так что я могу сделать:
SELECT count(*) as cntAll FROM(
select * from `tbl1` where `cond1`='something2'
UNION ALL
select * from `tbl2` where `cond2`='something2'
UNION ALL
-- etc
select * from `tblN` where `condN`='somethingN'
) as x;
Это также отлично работает.
Но могу ли я объединить два в одно утверждение?
Если я попробую это, он просто вернет один строка:
SELECT *, count(*) as cntAll FROM(
select * from `tbl1` where `cond1`='something2'
UNION ALL
select * from `tbl2` where `cond2`='something2'
UNION ALL
-- etc
select * from `tblN` where `condN`='somethingN'
ORDER BY `sortColumn` ASC
LIMIT 0, 15
) as x;
PS. Я пользуюсь MySQL v.5.7.28