Mysql хранимая процедура, чтобы получить общее количество после вставки - PullRequest
1 голос
/ 15 июня 2011

Я застрял на том, как получить увеличенные id и max, min, sum или count из предыдущего оператора вставки.

Кто-нибудь может мне посоветовать, как это сделать простым способом?

CREATE PROCEDURE INSERTRECORD()
BEGIN
INSERT INTO tb_normalized_data_20110615
SELECT * FROM tb_normalized_data WHERE 
       date_added BETWEEN '2011-06-15 01:10:00' and '2011-06-15 01:19:59'

-- Stuck here how to get the value for(x_min_id, x_max_id, x_min_date,
--  x_max_date) from the statement above without querying again?

INSERT INTO tb_backup_tracker(min_id, max_id, min_date, max_date)
VALUES(x_min_id, x_max_id, x_min_date, x_max_date);

END;

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Я думаю, что вы ищете курсор .Вот как это может работать:

DECLARE cur CURSOR FOR SELECT * FROM tb_normalized_data WHERE 
       date_added BETWEEN '2011-06-15 01:10:00' and '2011-06-15 01:19:59';
DECLARE ID INT;
DECLARE DT DATE;/* Declare all of your columns */
DECLARE MIN_ID INT;
DECLARE MAX_ID INT;
DECLARE MIN_DATE DATE;
DECLARE MAX_DATE DATE;
-- add your other columns here...
BEGIN
  OPEN cur;

  read_loop: LOOP
    FETCH cur INTO ID, DT /* Fetch into all of your columns */;
    IF ID < MIN_ID THEN
       SET @MIN_ID = ID;
    IF ID > MAX_ID THEN
       SET @MAX_ID = ID;
    END IF;
    INSERT INTO tb_normalized_data_20110615 (ID, DATE_ADDED 
           /*, rest of your columns*/ ) VALUES( /* columns */ );
  END LOOP;
  INSERT INTO tb_backup_tracker(min_id, max_id, min_date, max_date)
      VALUES(min_id, max_id, min_date, max_date);
  CLOSE cur;
0 голосов
/ 15 июня 2011

Используйте курсор для циклического перемещения по данным, и внутри цикла курсора вставьте и для отслеживания минимальных / максимальных значений для всего, что вам нужно.

Также ваш код хрупокизбегайте шаблона INSERT INTO TABLE SELECT * FROM ...;если вторая таблица добавит столбец, ваш SQL сломается.В любом случае, хорошо указывать столбцы явно.

Публикуйте, если вам нужна помощь с курсором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...