Ответы пользователя по тегу MySQL
  • Аналог FOR… IN… LOOP цикла в MySQL?

    ohifck
    @ohifck
    Смотрите курсоры.
    Например
    CREATE PROCEDURE curdemo()
    BEGIN
      DECLARE done INT DEFAULT FALSE;
      DECLARE a CHAR(16);
      DECLARE b, c INT;
      DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;
      DECLARE cur2 CURSOR FOR SELECT i FROM test.t2;
      DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    
      OPEN cur1;
      OPEN cur2;
    
      read_loop: LOOP
        FETCH cur1 INTO a, b;
        FETCH cur2 INTO c;
        IF done THEN
          LEAVE read_loop;
        END IF;
        IF b < c THEN
          INSERT INTO test.t3 VALUES (a,b);
        ELSE
          INSERT INTO test.t3 VALUES (a,c);
        END IF;
      END LOOP;
    
      CLOSE cur1;
      CLOSE cur2;
    END;
    
    Ответ написан
    1 комментарий
  • Простой вопрос по Mysql?

    ohifck
    @ohifck
    Возможно авто пришёл из друго БВ (например ORACLE или MsSQL) где есть вычисляемые поля. За счёт них экономия ресурсов при выборке, но более тяжёлая вставка(обновление). Это очень похоже на пример с триггерами — только там без триггеров делается. По сути приводит к денормализации за которой не надо следить.

    Очень полезно если например выборка по результату выполнения сложной математической функции над несколькими полями.
    Ответ написан
    Комментировать