Eu quero pegar X linhas, então eu defino LIMIT X
; mas como posso contar simultaneamente o número total de linhas também?
Atualmente, eu uso duas consultas separadas para fazê-lo como
SELECT COUNT(*) FROM col WHERE CLAUSE
SELECT * FROM col WHERE CLAUSE LIMIT X
Existe uma maneira de fazer isso em uma consulta?
EDIT: A saída deve ser as col
células e o número de linhas. De fato, depois de selecionar as col
células, ele deve passar por cima da mesa para contar apenas.
Eu sei que não é possível mesclar essas duas consultas, como o primeiro retorno 1 linha, mas o segundo X linhas. Estou curioso para saber se existe uma função no mysql para retornar o número de linhas na presença de LIMIT
.
Respostas:
Parece que você deseja executar o LIMIT, mas ainda sabe quantas linhas teriam sido retornadas sem o LIMIT. Confira FOUND ROWS
fonte
FOUND ROWS
e, embora ainda esteja executando duas consultas, pode ser um desempenho melhor do que executar uma segunda consulta COUNT (*) (dependendo das consultas e do conjunto de dados).mysql
não nos deixará sozinhos em uma questão tão importante;)Use
SQL_CALC_FOUND_ROWS
na sua consulta SELECT e executeSELECT FOUND_ROWS()
:fonte
Eu sei que isso é antigo, mas não é mais válido, com MySQL> = 8.0.17 cf Função MySQL Found_Rows () Portanto, ainda temos que emitir as duas consultas, por exemplo. adicione um com o
COUNT()
, infelizmente.fonte