Сводка : нам нужно удалить записи из таблицы на основе условий, касающихся самой таблицы, а также отдельной таблицы
Мне удалось воссоздать проблему, которую мы пытаемсярешить с помощью двух примеров таблиц, называемых 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