MYSQL |在COUNT()中使用子查询时出现语法错误
我在计数附近出现语法错误,但我试图找出语法错误,但找不到任何错误MYSQL |在COUNT()中使用子查询时出现语法错误,mysql,sql,select,count,group-by,Mysql,Sql,Select,Count,Group By,我在计数附近出现语法错误,但我试图找出语法错误,但找不到任何错误 SELECT E.`employee_id`, E.`full_name`, LE.`no_of_leaves` AS AllocatedLeaves, MLLT.`leave_type` AS LeaveTypeName, COUNT(SELECT * FROM leave_approval WHERE employee_id = 1) AS TotalLeavesTaken FROM employee E INNER JOI
SELECT
E.`employee_id`,
E.`full_name`,
LE.`no_of_leaves` AS AllocatedLeaves,
MLLT.`leave_type` AS LeaveTypeName,
COUNT(SELECT * FROM leave_approval WHERE employee_id = 1) AS TotalLeavesTaken
FROM employee E
INNER JOIN leave_entitlement LE
ON E.`employee_id` = LE.`employee_id`
INNER JOIN `ml_leave_type` MLLT
ON MLLT.`ml_leave_type_id` = LE.`ml_leave_type_id`
LEFT JOIN leave_approval LA
ON E.`employee_id` = LA.`employee_id`
LEFT JOIN leave_application LAPP
ON LAPP.`application_id` = LA.`leave_application_id`
LEFT JOIN ml_leave_type MLLTLA
ON MLLTLA.`ml_leave_type_id` = LAPP.`ml_leave_type_id`
这真的是一个语法错误吗。还是我在这里遗漏了什么
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from leave_approval where employee_id = 1) AS TotalLeavesTaken
from emp' at line 6
到
这一行:
(SELECT count(*) FROM leave_approval WHERE employee_id = 1) AS TotalLeavesTaken
这是不正确的。如果不将select*
子查询放在括号中,则无法对其进行计数,但即使这样,您也需要一个groupby
和附加逻辑。更好的办法是:
COUNT(SELECT * FROM leave_approval WHERE employee_id = 1) AS TotalLeavesTaken
在查询下面的案例检查中,不需要使用子查询进行计数 试试这个:
(Select count(*) from leave_approval where employee_id = 1) AS TotalLeavesTaken
请尝试此查询
选择E.`employee\u id`、E.`full\u name`、LE.`no\u of\u leaves`作为AllocatedLeaves,MLLT.`leave\u type`作为LeaveTypeName,
总计(当LA.employee_id为'1'时,则为1,否则为0结束)为TotaleAveStaken
来自雇员E
内联休假
在E.`employee\u id`=LE.`employee\u id上`
内部联接'ml\u left\u type'MLLT
在MLLT.`ml\u leave\u type\u id`=LE.`ml\u leave\u type\u id`
左加入左左批准
在E.`employee\u id`=LA.`employee\u id上`
左加入左离开应用程序LAPP
在LAPP上,`application\u id`=LA.`leave\u application\u id``
左连接ml\u左类型MLLTLA
在MLLTLA上。`ml\u leave\u type\u id`=LAPP。`ml\u leave\u type\u id`
谢谢您的快速回答。完美答案。。问题已解决:)
(Select count(*) from leave_approval where employee_id = 1) AS TotalLeavesTaken
SELECT E.employee_id, E.full_name, LE.no_of_leaves AS AllocatedLeaves,
MLLT.leave_type AS LeaveTypeName,
SUM(CASE WHEN LA.employee_id = 1 THEN 1 ELSE 0 END) AS TotalLeavesTakenByEmplyeeNo1
FROM employee E
INNER JOIN leave_entitlement LE ON E.employee_id = LE.employee_id
INNER JOIN `ml_leave_type` MLLT ON MLLT.ml_leave_type_id = LE.ml_leave_type_id
LEFT JOIN leave_approval LA ON E.employee_id = LA.employee_id
LEFT JOIN leave_application LAPP ON LAPP.application_id = LA.leave_application_id
LEFT JOIN ml_leave_type MLLTLA ON MLLTLA.ml_leave_type_id = LAPP.ml_leave_type_id
GROUP BY E.employee_id;