【发布时间】:2015-08-20 09:38:44
【问题描述】:
我需要此查询根据COUNT 返回的值执行CASE 语句:
select @getshift := (select(COUNT(*) from `oee_machinenames` where `Shift1` = '06:00:00'))
(Case
When @getshift >=1
Then
update `oee_system`.`oee_machinenames`
set `oee_machinenames`.`default_GM_state` = 0
where `oee_machinenames`.`Shift1` = '06:00:00'
when @getshift ==0
then
update `oee_system`.`oee_machinenames`
set `oee_machinenames`.`default_GM_state` = 9
where `oee_machinenames`.`Shift1` = '06:00:00' end)
变量@getshift 应该返回计数的数量,如果这个>= 1 则发生更新语句,否则应该发生另一个更新语句。我最终将在 MYSQL 时间触发事件中使用它
编辑:这都不能用作存储过程:
CREATE DEFINER=`tpm_dev`@`%` PROCEDURE `getshifts`()
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
select @getshift := select COUNT(*) from oee_machinenames where oee_machinenames.Shift1 = '06:00:00';
update oee_machinenames
if @getshift >=1
set default_GM_state = 99;
else
set default_GM_state = 90;
end if
END
【问题讨论】:
-
您遇到了什么问题?它必须是单个查询吗?运行一个选择然后一个单独的更新将更容易理解和维护。