• MySQL: Как удалить строки из t1 для которых в t2 нет записей старше x?

    fiercelypissingmongrel
    @fiercelypissingmongrel Автор вопроса
    Весь день гуглю.

    Тестовая БД

    create table t1 (
      id int unsigned primary key,
      name char(200) not null
    );
    
    create table t2 (
      id int unsigned primary key,
      id_t1 int unsigned not null,
      date int unsigned not null
    );
    
    insert into t1  values
    (1, 'a'),
    (2, 'b'),
    (3, 'c'),
    (4, 'delete me'),
    (5, 'e'),
    (6, 'f'),
    (7, 'g'),
    (8, 'h'),
    (9, 'i'),
    (10, 'j');
    
    insert into t2  values
    (1, 1, 100),
    (2, 2, 101),
    (3, 3, 102),
    (4, 4, 99),
    (5, 5, 105),
    (6, 6, 106),
    (7, 7, 107),
    (8, 8, 108),
    (9, 9, 109),
    (10, 10, 110),
    (11, 1, 22),
    (12, 2, 1000);



    На join сделал вот такой конструкт:
    SELECT t1.id
    FROM t1
    LEFT OUTER JOIN t2 ON t1.id = t2.id_t1
    WHERE t2.date < 100

    Возвращает:
    4
    1

    Единица пролазит потому что в t2 есть строка (11, 1, 22). Но там же есть строка (1, 1, 100), говорящая о том, что "1" мне в выборке не нужен. Как доработать запрос, чтобы проверялось это условие - ума не приложу.
  • MySQL: Как удалить строки из t1 для которых в t2 нет записей старше x?

    fiercelypissingmongrel
    @fiercelypissingmongrel Автор вопроса
    Тестовые таблицы:
    create table t1 (
    	id int unsigned primary key,
    	name char(200) not null
    );
    
    create table t2 (
    	id int unsigned primary key,
    	id_t1 int unsigned not null,
    	date int unsigned not null
    );
    
    insert into t1  values
    (1, 'a'),
    (2, 'b'),
    (3, 'c'),
    (4, 'delete me'),
    (5, 'e'),
    (6, 'f'),
    (7, 'g'),
    (8, 'h'),
    (9, 'i'),
    (10, 'j');
    
    insert into t2  values
    (1, 1, 100),
    (2, 2, 101),
    (3, 3, 102),
    (4, 4, 99),
    (5, 5, 105),
    (6, 6, 106),
    (7, 7, 107),
    (8, 8, 108),
    (9, 9, 109),
    (10, 10, 110),
    (11, 1, 22),
    (12, 2, 1000);

    Пороговое значение для запроса 100 (т.е. надо удалить если запись с самой большой датой меньше 100)
  • MySQL: Как удалить строки из t1 для которых в t2 нет записей старше x?

    fiercelypissingmongrel
    @fiercelypissingmongrel Автор вопроса
    Да никак не пробую. Не знаю с какой стороны подойти. Во второй таблице 10 миллионов записей и в первой миллион. Каждую секунду по 10 новых записей добавляется. Моих базовых познаний в mySQL явно не достаточно.