mysql - 如何在 mysql 工作台中修复此存储过程我不断收到错误代码 1222
问题描述
背景:我基本上是想向有两个或更多约会的客户展示,如果他们这样做,那么他们是首选客户,但如果他们少于两个,他们就不是首选。但是,我一直遇到上述问题。
Use plastic_surgeon;
DROP PROCEDURE IF EXISTS sp_updated_preferred_status;
ALTER TABLE clients
ADD column client_status varchar (60);
DELIMITER //
CREATE PROCEDURE sp_updated_preferred_status ()
BEGIN
DECLARE client_status varchar (20);
Select c.ID, count(a.ID) as number_of_appts
INTO client_status
from clients as c
join appointments as a
on c.ID = a.Client_ID
group by c.ID
having count(a.ID) > 1 ;
IF count(a.ID) > 1 THEN
SELECT 'preferred' as message;
ELSE
SELECT 'not preferred' as message;
END IF;
END//
DELIMITER ;
Call sp_updated_preferred_status ();
解决方案
SELECT clients.ID,
CASE WHEN COUNT(appointments.Client_ID) > 1
THEN 'preferred'
ELSE 'not preferred'
END AS client_status
FROM clients
LEFT JOIN appointments ON clients.ID = appointments.Client_ID
GROUP BY clients.ID
和分别
UPDATE clients
JOIN ( SELECT clients.ID,
CASE WHEN COUNT(appointments.Client_ID) > 1
THEN 'preferred'
ELSE 'not preferred'
END AS client_status
FROM clients
LEFT JOIN appointments ON clients.ID = appointments.Client_ID
GROUP BY clients.ID ) AS data_for_update USING (ID)
SET clients.client_status = data_for_update.client_status
推荐阅读
- scala - 在windows函数中比较两行与不同列的火花
- docker - 无法在 docker-compose 中为 Docker Windows 绑定主机卷
- jquery - 如何在jQuery中相邻显示输入值?
- mysql - 设计自动化数据库的最佳解决方案?
- java - 在 JSP 中使用 Display 标签进行分页
- sql - SQL Server 中的聚合函数或 GROUP BY 子句
- python - 如何在 Pandas/Python 中组合 2 个分别具有“小时”和“分钟”的数据框列?
- java - JDBC 驱动程序在结果集中返回额外的行
- laravel - laravel-5.7:file_put_contents
- html - 如何在 Angular 6 中显示以 base64 格式编码的图像?