Удалить записи из таблицы на основе условий нескольких таблиц - PullRequest
0 голосов
/ 03 февраля 2019

Сводка : нам нужно удалить записи из таблицы на основе условий, касающихся самой таблицы, а также отдельной таблицы

Мне удалось воссоздать проблему, которую мы пытаемсярешить с помощью двух примеров таблиц, называемых table_A и table_B.Их определения следующие:

CREATE TABLE table_A
(
  id  INT UNSIGNED AUTO_INCREMENT,
  name  VARCHAR(64) NOT NULL,
  date  DATE NOT NULL,
  otherFields_A VARCHAR(64) NOT NULL,
  -- many other fields in the table (different from table_B)
  -- but not relevant to the question being asked

  PRIMARY KEY(id)
);



CREATE TABLE table_B
(
  id  INT UNSIGNED AUTO_INCREMENT,
  name  VARCHAR(64) NOT NULL,
  date  DATE NOT NULL,
  otherFields_B VARCHAR(64) NOT NULL,
  -- many other fields in the table (different from table_A)
  -- but not relevant to the question being asked

  PRIMARY KEY(id)
);

Таблицы заполняются следующим образом:

INSERT INTO table_A(name, date) VALUES('John Doe', '2018-01-01'), ('John Doe', '2018-07-01'), ('John Doe', '2018-12-01'), ('Mary Smith', '2018-08-02'), ('Andy Roberts', '2018-07-02'), ('John Doe', '2018-12-02');

INSERT INTO table_B(name, date) VALUES('Keith Miller', '2018-01-03'), ('Mary Smith', '2018-07-02'), ('John Doe', '2018-07-30');

Мы хотим просмотреть таблицу_A и удалить все записи, для которых

table_B.name= table_A.name
AND
table_B.date >= table_A.date

1 Ответ

0 голосов
/ 03 февраля 2019

Это должно быть просто:

DELETE table_A
FROM table_A
INNER JOIN table_B 
    ON table_B.id = table_A.id
    AND table_B.date >= table_A.date

Демонстрация на DB Fiddle

Ссылка : Несколько таблиц в DELETE Синтаксис

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