我有下面的桌子。。
CREATE TABLE Coupons (
cid INT(11) PRIMARY KEY,
coupon_name VARCHAR(255),
partner VARCHAR(255),
is_active INT(1)
);
INSERT INTO `table_name`(cid,coupon_name,partner_name,is_active) VALUES (0,'SWIGGYONE','SWIGGY',1);
INSERT INTO `table_name`(cid,coupon_name,partner_name,is_active) VALUES (1,'ZOMATOONE','ZOMATO',1);
INSERT INTO `table_name`(cid,coupon_name,partner_name,is_active) VALUES (2,'SWIGGYONE','SWIGGY',1);
INSERT INTO `table_name`(cid,coupon_name,partner_name,is_active) VALUES (3,'ZOMATOTWO','ZOMATO',1);
我希望从每个合作伙伴获取一张活动优惠券,并将其is_active col更新为0。 我使用的是MySQL5.7
我也希望获取那些is_active设置为0的记录。
我对MySQL5.7中使用事务/@变量/存储过程没有足够的了解
请尝试以下操作:
CREATE PROCEDURE `pr_coupons`()
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
/** Inactivate the very first coupon **/
UPDATE Coupons
SET is_active = 0
WHERE Coupons.cid IN
(
SELECT cid from
(
SELECT cid
FROM Coupons
WHERE Coupons.is_active = 1
GROUP BY Coupons.partner
) AS inner_table
);
/** Select active coupons **/
SELECT *
FROM Coupons
WHERE is_active = 1;
END