Хотите перебирать таблицу строка за строкой, и если в другой таблице есть совпадающая строка, удалите ее с ограничением 1

Голова: BINGO! Вы получили это полностью - это именно то, для чего он идеально подходит. Во многих встроенных средах внешние ограничения и / или сценарий общего использования заставляют программиста отделять выделение объекта от его инициализации. Скомпонованный вместе, C ++ называет это «экземпляр»; но всякий раз, когда действие конструктора должно быть явно вызвано без динамического или автоматического распределения, размещение нового - это способ сделать это. Это также идеальный способ найти глобальный объект C ++, привязанный к адресу аппаратного компонента (I / O с памятью) или для любого статического объекта, который по какой-либо причине должен находиться по фиксированному адресу.

1
задан bjk116 21 February 2019 в 21:16
поделиться

1 ответ

Похоже, вы пропускаете только cursor.

Ссылочный код можно найти здесь: Курсоры MySql

CREATE PROCEDURE deleteOverlappingBottles()
BEGIN
DECLARE done INT DEFAULT FALSE;
-- Variables for FETCH (change data types to your needs)
DECLARE vBottleBarcode CHAR(100);
DECLARE vt_stamp TIMESTAMP;
DECLARE vParentPrepackId INT;
-- cursor to iterate through the table
DECLARE cur1 CURSOR FOR SELECT BottleBarcode, t_stamp, ParentPrepackId FROM allBottles;
-- apparently MySql needs this to handle the end of the table
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

OPEN cur1;

read_loop: LOOP
    -- get the three column values for the current row
    FETCH cur1 INTO vBottleBarcode, vt_stamp, vParentPrepackId;
    IF done THEN
      LEAVE read_loop;
    END IF;
    -- use the variables from FETCH to identify the row in historicdataToDelete
    DELETE FROM historicdata2Delete as t
    WHERE t.unitADcode = vBottleBarcode AND t.bottle_timestamp = vt_stamp
    AND t.prepackId = vParentPrepackId
    LIMIT 1; -- delete only 1 row
  END LOOP;

  CLOSE cur1;
END LOOP;
End;

Отказ от ответственности: Я не знаком с MySql. Синтаксис может быть немного неправильным, пожалуйста, адаптируйтесь к вашим потребностям.

0
ответ дан Florian Lim 21 February 2019 в 21:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: