想筛选出table1在table2中相应月份只包含table2中的ID的记录,生成的结果是table3,用MySQL怎么写呢?
select t1.*
from table1 t1
where exists (
select 1 from table2 t2
where t1.id = t2.id and date_format(t1.date, '%Y%m') = date_format(t2.date, '%Y%m')
)
select t1.date,t1.id,t1.gmv from table1 t1 inner join table2 t2 on DATE_FORMAT('t1.date','%y-%m')=DATE_FORMAT('t2.date','%y-%m')and t1.id=y2.id
不太明白你的意思 比如是表1和表2的月份8月份 表1是C 表2是D 要把D的数据存到表3吗?
select t1.date,t1.id,t1.gmv from table1 t1,table2 t2 where t1.id = t2.id and t1.date>=t2.date
group by t1.date,t1.id,t1.gmv;使用group by是为了去重,
否则查询出来的数据会多。比如id为A的,关联查询之后会出现4条数据,date为2019/7/4的会多一行出来。建议下次把数据和表结构发一下,建表和建数据有点耗时间。亲测有效。
select t1.date,t1.id,t1.gmv from table1 t1 inner join table2 t2 on DATE_FORMAT('t1.date','%y/%m')=DATE_FORMAT('t2.date','%y/%m')and t1.id=t2.id
INSERT INTO table3 ( date, id, gmv ) SELECT
t1.date,
t1.id,
t1.gmv
FROM
table1 t1
WHERE
EXISTS (
SELECT
1
FROM
table2 t2
WHERE
t1.id = t2.id
AND date_format( t1.date, '%Y%m' ) = date_format( t2.date, '%Y%m' )
)
ORDER BY
t1.date ASC