weixin_44666776
weixin_44666776
2019-11-13 11:01
采纳率: 50%
浏览 462

请教一个MySQL分月份筛选的问题。

图片说明

想筛选出table1在table2中相应月份只包含table2中的ID的记录,生成的结果是table3,用MySQL怎么写呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • guangcaiwudong
    Kevin.Y.K 2019-11-13 11:22
    已采纳
    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')
    )
    
    点赞 评论
  • qq_36720114
    德玛洗牙 2019-11-13 11:16

    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

    点赞 评论
  • qq_43396436
    qq_43396436 2019-11-13 11:23

    不太明白你的意思 比如是表1和表2的月份8月份 表1是C 表2是D 要把D的数据存到表3吗?

    点赞 评论
  • lppzyt
    lppzyt 2019-11-13 11:29

    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的会多一行出来。建议下次把数据和表结构发一下,建表和建数据有点耗时间。亲测有效。

    点赞 评论
  • weixin_43016735
    流,语 2019-11-13 12:57

    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

    点赞 评论
  • admin19921022
    宁内疚不迁就 2019-11-13 16:36

    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

    点赞 评论

相关推荐