MySQL Update记录了关系和重复值

时间:2015-09-02 10:31:41

标签: mysql

我在更新数据库中的数据时出现问题,如果可能的话,我无法弄明白。

我有桌子:

products_propertiesprop_newprod_id

product_categoriesprod_idcat_id

categoriescat_id

现在,每个产品都通过表格product_categories分配到一个或多个类别,并且大约有200个产品的prop_news设置为' 1'在每个类别中,它是许多人的方式。

我想限制prop_news设置为' 1'每个类别12个。

我不知道如何编写查询。 如果你有任何吸烟,我会非常乐意看到它。

1 个答案:

答案 0 :(得分:0)

您可以将此视为解决问题的方法。此查询仅保存一个值为1的prod_new。将where n > 1更改为您需要的计数

drop table if exists t1;
create table t1 (prod_new int, prod_id int);
insert into t1 values 
(1,1), (1,2), (1,3), (1,4), (1,5);

drop table if exists t2;
create table t2 (prod_id int, cat_id int);
insert into t2 values 
(1,1), (2,1), (3,2), (4, 2), (5,2);

update t1 
    set prod_new=0 
  where prod_id in 
    (select prod_id 
         from 
           (select prod_id, @n:=if(@c=cat_id, @n:=@n+1, if(@c:=cat_id, 1, 1)) n 
                from t2 
                       cross join 
                     (select @n:=0,  @c:=0) n  
              order by cat_id 
           ) t 
      where n > 1 
   );

select * from t1