2013-08-28 75 views
0

我有表subcategorylisting_categorylistin_category表具有不同的记录,其中包括subcategorycategory。我想要的是找到所有subcategory计数为具体category说类别= 3,在我的listing_Category表中更新它在subcategory表。 什么,我试图做到这一点需要mysql更新选择查询进行优化

UPDATE `subcategories` SET total_count = (SELECT count(*) 
FROM `listings_category` 
WHERE category =3 and subcategory IN (subcategories.id) 
WHERE category_id =3 and id=subcategories.id 

我在做阵列subcategories.id有问题。任何帮助将不胜感激。如果有人提出更优化的查询将会很棒。在此先感谢

+0

你就可以说'在(从子类中选择id其中任何)' – dcaswell

回答

1

我自己解决:)我不知道为什么人们投票否定有意义的问题。 这里是解决方案。

update subcategories, 
     (
     SELECT subcategory,count(subcategory) as count 
      FROM `listings_category` 
      group by subcategory 
     ) sb 
    SET subcategories.total_count = sb.count 
where subcategories.id = sb.subcategory 
+1

+1。更好地使用显式ANSI'JOIN'语法而不是隐式逗号 – peterm