'Я хочу добавить новую таблицу к историческим данным.' тогда вам не нужно немного до и до союза. Например, используя ваш второй выбор в качестве основы и исправляя предложение where.
drop table if exists ut,ht;
create table ut(dt date,product_description varchar(20), sales int);
create table ht(dt date,product_description varchar(20), sales int);
insert into ht values
('2020-04-01','1 - aaa',10),('2020-04-02','1 - aaa',10);
insert into ut values
('2020-03-01','1 - aaa',20),('2020-04-01','1 - aaa',20);
insert into ht
select ut.dt,ut.product_description,ut.sales
from ut
left join ht on ht.dt = ut.dt and
substring_index(ht.product_description,'-',1) = substring_index(ut.product_description,'-',1)
where ht.dt is null and ht.product_description is null;
select * from ht;
+------------+---------------------+-------+
| dt | product_description | sales |
+------------+---------------------+-------+
| 2020-04-01 | 1 - aaa | 10 |
| 2020-04-02 | 1 - aaa | 10 |
| 2020-03-01 | 1 - aaa | 20 |
+------------+---------------------+-------+
3 rows in set (0.001 sec)
Вы также можете рассмотреть триггер на ut или предложение существующие.