0
我有2個表格(產品和購物車)。購物車是foreign key
的商品。根據另一個表中的選擇在一個表中更新字段
當我爲每個產品生成具有相同外國代碼的所有代碼key(id_cart)
我需要更新表格購物車中的代理行,但前提是所有具有相同id_cart
的產品都已經具有此字段填充。
我想這樣做只有一個查詢。可能嗎?
在此先感謝!
我有2個表格(產品和購物車)。購物車是foreign key
的商品。根據另一個表中的選擇在一個表中更新字段
當我爲每個產品生成具有相同外國代碼的所有代碼key(id_cart)
我需要更新表格購物車中的代理行,但前提是所有具有相同id_cart
的產品都已經具有此字段填充。
我想這樣做只有一個查詢。可能嗎?
在此先感謝!
有幾種方法可以做到這一點,比如像這樣update
與having
條款:
update cart c set status = 'COMPLETE'
where exists (select 1
from product p where p.id_cart = c.id
having count(1) = count(code))
或merge
聲明:
merge into cart c
using (select id_cart
from product
group by id_cart
having count(1) = count(code)) p
on (p.id_cart = c.id)
when matched then update set status = 'COMPLETE'
的測試數據:
create table product (id number(3), name varchar2(10), code varchar2(4), id_cart number(3));
insert into product values (1, 'pen', 'A', 1);
insert into product values (2, 'pencil', 'X', 1);
insert into product values (3, 'box', null, 2);
insert into product values (4, 'paper', 'Q', 2);
create table cart (id number(3), status varchar2(10));
insert into cart values (1, null);
insert into cart values (2, null);
結果:
ID STATUS
--- ----------
1 COMPLETE
2
您可以使用更新的 例如
UPDATE dbo.Cart
SET [fieldToUpdate] = p.fieldToUpdate
FROM dbo.Cart c
JOIN dbo.products p ON c.fk = p.fk
WHERE cart.id = c.id
編輯你的問題,並提供樣本數據和預期的結果。這聽起來像你可能需要一個觸發器。 –