当单个列的另一个表的所有数据都等于mysql

时间:2016-01-21 11:51:00

标签: mysql

我创建了两个名为snag_list和defect_list的表。当所有defect_list状态应为2

时,我需要将snag_list的status字段更改为2

2 个答案:

答案 0 :(得分:0)

不确定这是否有帮助,但尝试为defect_list创建触发器 并检查状态列的非重复计数,如果它是1并且值为2然后更新snag_list,示例将如下所示

DELIMITER $$
CREATE TRIGGER checkstatus 
    AFTER UPDATE ON defect_list
    FOR EACH ROW 
BEGIN
    DECLARE cnt INT 
    SELECT COUNT(DISTINCT status) FROM defect_list INTO cnt
    DECLARE st INT 
    SELECT DISTINCT status FROM defect_list LIMIT 1 INTO st
    IF(cnt = 1 AND st = 2)
        UPDATE snag_list SET status = 2
    ENF IF
END$$
DELIMITER ;

答案 1 :(得分:0)

您的问题非常模糊,但我想这正是您可能正在寻找的。

DECLARE
   count_rec VARCHAR2(10);
   data_rec VARCHAR2(10);   
BEGIN
   SELECT COUNT(DISTINCT status) INTO count_rec FROM defect_list;
   SELECT DISTINCT status INTO data_rec FROM defect_list;
   IF (count_rec = '1' AND data_rec = '2') THEN
      UPDATE snag_list SET status = '2';
   END IF;
END;

编辑 - >您可以根据需要更改2个变量的数据类型。如果您不确定数据是否为数字,请使用VARCHAR2。