mysql 从连接记录中获取总行数

标签 mysql sql database

好的。这很奇怪,我正在使用 group_by 并加入

这是我的查询。

SELECT *
FROM (`emp_skills` ES)
INNER JOIN `employee` E ON `E`.`employee_id`= `ES`.`employee_id`
INNER JOIN `ml_skill_type` MLST ON `MLST`.`skill_type_id` = `ES`.`ml_skill_type_id`
INNER JOIN `employment` ET ON `ET`.`employee_id` = `E`.`employee_id`
INNER JOIN `position_management` PM ON `PM`.`employement_id`=`ET`.`employment_id` AND PM.current=1
INNER JOIN `ml_designations` MLD ON `MLD`.`ml_designation_id`=`PM`.`ml_designation_id`
LEFT JOIN `assign_job` AJ ON `AJ`.`employee_id` = `E`.`employee_id`
LEFT JOIN `ml_projects` MLP ON `MLP`.`project_id` = `AJ`.`project_id`
GROUP BY `E`.`employee_id`

这是我到目前为止得到的结果。 enter image description here

但是如果我用这个。

SELECT COUNT(*) AS numrows

那么我的查询就变成了

SELECT COUNT(*) AS numrows
FROM (`emp_skills` ES)
INNER JOIN `employee` E ON `E`.`employee_id`= `ES`.`employee_id`
INNER JOIN `ml_skill_type` MLST ON `MLST`.`skill_type_id` = `ES`.`ml_skill_type_id`
INNER JOIN `employment` ET ON `ET`.`employee_id` = `E`.`employee_id`
INNER JOIN `position_management` PM ON `PM`.`employement_id`=`ET`.`employment_id` AND PM.current=1
INNER JOIN `ml_designations` MLD ON `MLD`.`ml_designation_id`=`PM`.`ml_designation_id`
LEFT JOIN `assign_job` AJ ON `AJ`.`employee_id` = `E`.`employee_id`
LEFT JOIN `ml_projects` MLP ON `MLP`.`project_id` = `AJ`.`project_id`
GROUP BY `E`.`employee_id`

这是我得到的奇怪结果,我想我应该只得到 1 列和 1 行来显示总行数。 但这就是我得到的。 enter image description here

如何修复这个查询?

<小时/>

如果我无法解释我的问题,我很抱歉..

这是注释掉 group_concat 和 group_by 的查询

SELECT 
`E`.`employee_id`,
`E`.`full_name`,
`MLD`.`designation_name`#,
#GROUP_CONCAT(DISTINCT MLP.project_title) AS Projects,
#GROUP_CONCAT(DISTINCT MLST.skill_name) AS EmployeeSkills
FROM (`emp_skills` ES)
INNER JOIN `employee` E ON `E`.`employee_id`= `ES`.`employee_id`
INNER JOIN `ml_skill_type` MLST ON `MLST`.`skill_type_id` = `ES`.`ml_skill_type_id`
INNER JOIN `employment` ET ON `ET`.`employee_id` = `E`.`employee_id`
INNER JOIN `position_management` PM ON `PM`.`employement_id`=`ET`.`employment_id` AND PM.current=1
INNER JOIN `ml_designations` MLD ON `MLD`.`ml_designation_id`=`PM`.`ml_designation_id`
LEFT JOIN `assign_job` AJ ON `AJ`.`employee_id` = `E`.`employee_id`
LEFT JOIN `ml_projects` MLP ON `MLP`.`project_id` = `AJ`.`project_id`
#GROUP BY `E`.`employee_id`
LIMIT 25 

这是它的结果。 enter image description here 上图中有16条记录,计数即可显示良好。但如果使用 group_concat 和 group_by 我会得到 6 条记录。

enter image description here

我真正想要的,我不想要重复的员工姓名,而是想要逗号分隔的值等。

但如何知道从 mysql 返回了多少行查询。

最佳答案

如果您想知道总数,则需要删除末尾的GROUP BY E.employee_id。现在,您获得的是每个不同 employee_id 的聚合计数,而不是总计数。

关于mysql 从连接记录中获取总行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27378195/

相关文章:

mysql - hibernate自动递增

php - laravel 用另一个字段更新一个字段

mysql - 选择的结果是数组,我想将它用于 "where in"另一个选择

c# - 跨请求持久化变量

ios - 如何在 parse.com 中将一列拆分为多个变量列

mysql - 选择使用联合查询

mysql - 数据库设计: Storing previous version versus storing first version in version control systems

php - pdo 中的 errorinfo 函数在 medoo lib 中始终返回 0000

C#如何测试数据库是否可以快速秒连接?

php - 运行这段代码时会发生什么?