mysql - 如何创建条件来自两个表的过程?
问题描述
我想创建一个如下所示的过程:
CREATE DEFINER=`root`@`localhost` PROCEDURE `transformare_in_imprumut`()
MODIFIES SQL DATA
BEGIN
DECLARE stoc_actual INT(4);
SELECT stoc INTO stoc_actual FROM carti WHERE
carti.idCarte=rezervari.idCarte;
IF(stoc_actual >0) THEN
UPDATE carti set stoc=stoc-1 WHERE carti.idCarte=rezervari.idCarte;
INSERT INTO imprumuturi(idCarte)
SELECT idCarte FROM rezervari;
ELSE
UPDATE carti set stoc=stoc+1;
END IF;
END;
问题是我想在满足 WHERE 条件时更新 imprumuturi 表。但是这个过程不起作用,因为我正在比较两个不同表中的两个值。我的问题是:如何从两个表中获取两个值并比较它们在 WHERE 条件下。任何帮助表示赞赏!
解决方案
如果表之间有多个匹配的行,则不能将它们全部存储在一个变量中。
您可以使用游标遍历所有匹配的行,但更简单的方法是JOIN
将UPDATE
. ALEFT JOIN
将允许您根据该行是否在另一个表中匹配来进行正确的更新。
UPDATE carti
LEFT JOIN rezervari ON carti.idCarte = reservari.idCart
SET carti.stoc = IF(reservari.idCart IS NULL, stoc+1, stoc-1);
INSERT INTO imprumuturi (idCart)
SELECT idCarte FROM rezervari;
推荐阅读
- javascript - 如何让 jQuery Full Calendar 事件显示
- java - 如何以 Json 格式显示包含员工和多个地址的地图
- java - 休眠:合并/插入操作期间缺少参数
- node.js - 安装 slc 命令行工具时出现错误
- hbase - 小表的 Hbase 拆分
- kubernetes - Kubernetes DNS 查找失败
- mysql - MySQL:如何查询自值为 X 以来的次数
- aframe - 点击加载资产
- git - git cherry-pick 和 git format-patch 有什么区别?是吗?
- python - Python中的简单单元测试来检查输入和预期输出