我在更新数据库中的数据时出现问题,如果可能的话,我无法弄明白。
我有桌子:
products_properties
列prop_new
,prod_id
,
product_categories
列prod_id
和cat_id
,
categories
列cat_id
现在,每个产品都通过表格product_categories
分配到一个或多个类别,并且大约有200个产品的prop_news
设置为' 1'在每个类别中,它是许多人的方式。
我想限制prop_news
设置为' 1'每个类别12个。
我不知道如何编写查询。 如果你有任何吸烟,我会非常乐意看到它。
答案 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