What is the difference between the following 2 queries? (They both produce the same results)
select *
from (
select * from (
select *
from phppos_items
where name like 'AB10LA2%' and deleted = 0
order by `name` limit 16
) t
union
select * from (
select *
from phppos_items
where item_number like 'AB10LA2%' and deleted = 0
order by `name` limit 16
) t
union
select * from (
select *
from phppos_items
where category like 'AB10LA2%' and deleted = 0
order by `name` limit 16
) t
) as top_rows
order by `name` limit 16
vs
select *
from (
(select *
from phppos_items
where name like 'AB10LA2%' and deleted = 0
order by `name` limit 16)
union
(select *
from phppos_items
where item_number like 'AB10LA2%' and deleted = 0
order by `name` limit 16)
union
(select *
from phppos_items
where category like 'AB10LA2%' and deleted = 0
order by `name` limit 16)
) as top_rows
order by `name` limit 16
The first version has another set of temporary tables, which is useless and a waste of resources in this specific case.
All the following will produce same result:
to infinity 🙂
And in your very specific case this will be enough: