Detta är förmodligen tänkt att tillåta paginering. Att visa det totala antalet rader kan bli riktigt dyrt.
Ett sätt som jag har funnit fungera bra på en mängd olika databaser är att dela upp arbetet i två delar. Först samlar du ID för de relevanta raderna i en tillfällig tabell. För det andra frågar du hela datasetet. Data som samlas in i den första delen ger dig ett enkelt sätt att beräkna det totala antalet rader och ID:n för rader på en viss sida.
Här är ett grovt exempel för SQL Server. Observera att exemplet inte förlitar sig på fönsterfunktioner som row_number()
, som inte är tillgängliga i MySQL.
create table #id_list (rn int identity, pk int);
insert #id_list
(pk)
select customer_id
from customers
where name like '%Joe%';
select (select count(*) from #id_list) as total_rows
, rn -- The row's number
, name
, birth_date
, ... -- Other columns
from #id_list id
join customer c
on c.pk = c.customer_id
where rn between 15 and 29; -- Second 15-row page
Förresten, om det är möjligt skulle jag återlämna detta krav till designerna för att dubbelkolla om detta är värt att lägga mycket tid på. Det är mycket enklare om du inte behöver visa det totala antalet rader.