mysql - 多选时如何使用 SQL_CALC_FOUND_ROWS
问题描述
我正在研究使用 SQL_CALC_FOUND_ROWS() 的分页代码,但是当我将每页的结果限制为小于总结果的数字时,“SELECT FOUND_ROWS() as total”将返回每页的元素数而不是总数找到的行数。由于我正在从第二个选择中进行选择,因此这个结果完全有意义,但我不知道如何解决这个问题。如何将总结果从内部传递到外部选择?
我的代码(请忽略 php 转义的引号):
SELECT SQL_CALC_FOUND_ROWS userid,contaTipo,userNome,nomeFantasia,sexo,cidade,estado,bairro,imovelN,logradouro,avaliacao,imagem,formasPagamento,estabelecimento,profissao
FROM
(SELECT vw_Busca.userid as userid, vw_Busca.contaTipo as contaTipo, vw_Busca.userNome as userNome,
vw_Busca.nomeFantasia as nomeFantasia,vw_Busca.sexo as sexo, vw_Busca.cidade as cidade, vw_Busca.estado as estado, vw_Busca.bairro as bairro,
vw_Busca.imovelN as imovelN,vw_Busca.logradouro as logradouro,tipoProfissionalPF.tipo as profissao, tipoProfissionalPJ.tipo as estabelecimento,
vw_userRating.total as avaliacao, GROUP_CONCAT(especialidades.especialidade SEPARATOR ', ') as especs,
vw_Busca.imagem as imagem, GROUP_CONCAT( DISTINCT userPagamento.formaPagamento SEPARATOR ', ') as formasPagamento
FROM vw_Busca
LEFT JOIN usersEspec ON usersEspec.userid=vw_Busca.userid
LEFT JOIN especialidades ON especialidades.id=usersEspec.especialidade
LEFT JOIN userPagamento ON userPagamento.userid=vw_Busca.userid
LEFT JOIN profissionais ON profissionais.userid=vw_Busca.userid
LEFT JOIN tipoProfissionalPF ON tipoProfissionalPF.id=profissionais.profissao
LEFT JOIN empresaDados ON empresaDados.userid=vw_Busca.userid
LEFT JOIN tipoProfissionalPJ ON tipoProfissionalPJ.id=empresaDados.tipoProfissionalPJ
LEFT JOIN vw_userRating ON vw_userRating.userid=vw_Busca.userid
WHERE vw_Busca.cidadeId='$cidade' AND (vw_Busca.userNome LIKE '%".$termo."%' OR
vw_Busca.nomeFantasia LIKE '%".$termo."%'
OR vw_Busca.tags LIKE '%".$termo."%')
GROUP BY userid LIMIT $inicio,$qtd) as mainTable
ORDER BY mainTable.avaliacao DESC
解决方案
您的外部选择似乎只是对内部查询返回的结果进行排序。由于您的内部查询已经应用了 LIMIT,因此您的外部查询实际上是对部分结果执行排序,这对我来说似乎不正确。所以我想你可以完全删除外部选择来解决你的问题。
顺便说一句,刚刚注意到 SQL_CALC_FOUND_ROWS 查询修饰符和随附的 FOUND_ROWS() 函数根据文档从 MySQL 8.0.17 开始被弃用
推荐阅读
- javascript - 如何在javascript中访问循环外的变量
- php - 如何在三元条件下添加 2 个参数 - PHP?
- ruby-on-rails - Rails 无法连接到本地安装的 firebird db
- mysql - mysql 中获取最新时间员工列表的最佳查询是什么?
- jira - 在流程设计中将步骤命名为任务与状态
- slam - MRPT SLAM MRPT::slam::CMetricMapBuilderICP 警告 姿势外推失败
- ruby-on-rails - 日期格式在 excel 中被识别为自定义而不是日期,其中 excel 表是使用 ruby on rails 框架生成的
- loops - 如何用在 ISE 上工作的东西替换下面的 while 循环?
- nativescript - Nativescript 下拉插件仅显示 Object 对象而不是值
- javascript - Javascript:如何切出整数的一部分?