在 case 语句查询中增加临时变量值
Increment temperory variable value in case statement query
尝试使用 case 语句根据列值计算计数,我使用以下代码来执行此操作:
SET @tempVariable1 := 0;
SET @tempVariable2 := 0;
SELECT EMPLOYEEID,count(ADNUMBER),
CASE
WHEN AEERROR <> '--' then @tempVariable1:=@tempVariable1+1
ELSE 0
END AS Ext_err,
CASE
WHEN INTERNALERRORS <> '--' then @tempVariable2:=@tempVariable2+1
ELSE 0
END AS Int_err
FROM employee_productivity_details group by(EMPLOYEEID) LIMIT 2,20;
当我在 workbench 上 运行 时它工作正常但是当我在 PHP 变量中设置此查询时 $sql
然后它显示错误。那么如何在查询中设置临时变量呢?还有其他方法吗?
这是你想要的吗?
SELECT EMPLOYEEID, count(ADNUMBER),
SUM(AEERROR <> '--') AS Ext_err,
SUM(INTERNALERRORS <> '--' ) AS Int_err
FROM employee_productivity_details
group by(EMPLOYEEID)
LIMIT 2, 20;
根据需要,这对我来说效果很好。
SELECT EMPLOYEEID,
count(ADNUMBER),
COALESCE(SUM(CASE INTERNALERRORS WHEN INTERNALERRORS <> '--'
THEN 0 ELSE 1 END), 0) as IntErr,
COALESCE(SUM(CASE AEERROR WHEN AEERROR <> '--'
THEN 0 ELSE 1 END), 0) AS ExtErr
FROM employee_productivity_details
group by(EMPLOYEEID) order by EMPLOYEEID LIMIT 2,20;
尝试使用 case 语句根据列值计算计数,我使用以下代码来执行此操作:
SET @tempVariable1 := 0;
SET @tempVariable2 := 0;
SELECT EMPLOYEEID,count(ADNUMBER),
CASE
WHEN AEERROR <> '--' then @tempVariable1:=@tempVariable1+1
ELSE 0
END AS Ext_err,
CASE
WHEN INTERNALERRORS <> '--' then @tempVariable2:=@tempVariable2+1
ELSE 0
END AS Int_err
FROM employee_productivity_details group by(EMPLOYEEID) LIMIT 2,20;
当我在 workbench 上 运行 时它工作正常但是当我在 PHP 变量中设置此查询时 $sql
然后它显示错误。那么如何在查询中设置临时变量呢?还有其他方法吗?
这是你想要的吗?
SELECT EMPLOYEEID, count(ADNUMBER),
SUM(AEERROR <> '--') AS Ext_err,
SUM(INTERNALERRORS <> '--' ) AS Int_err
FROM employee_productivity_details
group by(EMPLOYEEID)
LIMIT 2, 20;
根据需要,这对我来说效果很好。
SELECT EMPLOYEEID,
count(ADNUMBER),
COALESCE(SUM(CASE INTERNALERRORS WHEN INTERNALERRORS <> '--'
THEN 0 ELSE 1 END), 0) as IntErr,
COALESCE(SUM(CASE AEERROR WHEN AEERROR <> '--'
THEN 0 ELSE 1 END), 0) AS ExtErr
FROM employee_productivity_details
group by(EMPLOYEEID) order by EMPLOYEEID LIMIT 2,20;