Сравните даты в том же столбце MYSQL - PullRequest
0 голосов
/ 17 апреля 2020

Я хочу, чтобы столбец date_end итеративно сравнивал следующую строку и удалял ее до тех пор, пока date_end не станет больше, чем в ней. Например,

 R|      date_end
 1|       1993-12-20
 2|       1993-11-17
 3|  1993-11-17
 4|   1993-12-30
 5|   1993-12-30
 6|   1994-01-21  
 7|   1993-01-05

Я хочу сохранить строки 1, 4, 6 в новой временной таблице. Я безуспешно использовал технику самостоятельного соединения. В таблице также есть другие столбцы.

SELECT 
    a.*,
    b.datestart AS datestart2,
    b.hourtimestart AS hourtimestart2,
    b.dateend AS dateend2,
    b.hourtimeend AS hourtimeend2,
    b.Amount AS Amount2,
    b.mintime AS mintime2
FROM
    tempdb.combined3 a,
    tempdb.combined4 b;

SELECT 
    *
FROM
    tempdb.combined5
WHERE
    (dateend < datestart2)
ORDER BY datestart , datestart2;

enter image description here

ОБНОВЛЕНИЕ: https://www.db-fiddle.com/f/6JCMtaMJvrq9D6vZZFu8xt/2

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

РЕДАКТИРОВАНИЕ:

Попробуйте этот запрос

SELECT *,
       CASE WHEN A.DateEnd > B.DateEnd THEN 1 ELSE 0 END AS checking
 FROM combined4 A LEFT JOIN
(SELECT r-1 AS BR,R,DateEnd FROM combined4) B
ON A.R=BR
HAVING checking=1;
1 голос
/ 17 апреля 2020

Я бы сделал это за вас. Я не MySQL эксперт, но я думаю, что это сработает. Он в основном преобразует выбор в al oop, в котором вы можете взаимодействовать с переменными.

Проверьте этот пример кода:

CREATE PROCEDURE curdemo()
BEGIN

  DECLARE current datetime2;
  DECLARE previous datetime2;

  DECLARE cur1 CURSOR FOR 
      SELECT b.dateend AS dateend2
        FROM tempdb.combined4 b;

  OPEN cur1;

  read_loop: LOOP
    FETCH cur1 INTO current;

    IF done THEN
      LEAVE read_loop;
    END IF;    

    IF current > previous THEN
      /* insert into your table here */
      SET previous = current;
    END IF;

  END LOOP;

  CLOSE cur1;
END;

Подробнее о курсорах вы можете узнать здесь: https://dev.mysql.com/doc/refman/8.0/en/cursors.html

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