0

我有下表..

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);

我希望从每个合作伙伴那里获取一张 ACTIVE 优惠券并将其 is_active col 更新为 0。我使用的是 MYSQL 5.7

我也希望获取那些 is_active 设置为 0 的记录。

我对 MYSQL 5.7 中使用的事务/@variables/存储过程没有足够的了解

4

1 回答 1

0

尝试这个:

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
于 2020-07-09T11:28:48.973 回答