表 events 有两个字段,  id , photo_count 
表 photos 有三个字段 , id , event_id , url   其中 event_id 是 events 表的 对应的 id
现在 photo_count 不正确 , 应该要设置成  photos 表里面对应的条数 (count) 。
那么 , 如何用一个 SQL 来更新 events.photo_count 使得其值正确呢?

解决方案 »

  1.   

    update a set a.photo_count = b.pcount
    from events as a inner join
    (select event_id,count(*) pcount from photos group by event_id) as b 
    on a.id=b.event_id
    这样的句子在ms-sql中可以,在mysql不好使可能,不知道有没有其它方法了 :(
      

  2.   

    update t1,t2 set t1.name= t2.name
     
    where t1.id=t2.id 这样的语法好像可以,你可以修改一下我上面那个sql
      

  3.   

    也就是这样的语法
    update events as a,(select event_id,count(*) pcount from photos group by event_id) as b
    set a.photo_count = b.pcount
    where a.id=b.event_id
      

  4.   

    我的跟 的 SeerMi(西米)  一样。
    不过 这样存在一个问题是,
      count =0 的 event 可能不会被设置成0 ,(保留原值) 。
    但是,按题意,应该是  0 才合适, 因为 photos 里面对应的数目的确是 0到现在为止,我找到的比较优的写法如下: 
    比较简洁,没有多表复合查询
    update events e set photo_count = (select count(id) from photos where event_id=e.id);