[英]How to properly use CASE WHEN / THEN / ELSE with IN?
這是我的查詢:
UPDATE tbl_pedidos_produtos SET status = CASE
WHEN id IN (SELECT produto_id FROM tbl_pedidos_cotacaos_produtos) THEN 4
ELSE 3 END WHERE pedido_id = ".$produto->itens[$t]->pedido_id
這個“WHEN id IN(...)”有效嗎? 我該怎么做這樣的測試?
在update語句中使用left join
子句應該可以解決問題:
UPDATE tbl_pedidos_produtos pp
LEFT JOIN tbl_pedidos_cotacaos_produtos pcp ON pp.id = pcp.produto_id
SET pp.status = CASE WHEN pcp.produto_id IS NULL THEN 4 ELSE 3 END
WHERE pedido_id = ".$produto->itens[$t]->pedido_id
是的,這是一種有效的更新方式。
您可以使用SQLFiddle進行測試,如下所示: http ://sqlfiddle.com/#!9/67b3a/1和http://sqlfiddle.com/#!9/5158af/1
create table test (id int, status varchar(10));
insert into test values (1, null);
create table test2 (id int);
insert into test2 values (2);
update test
set status = case when id in (select id from test2) then 4 else 3 end
where id = 1;
select * from test
結果:
| id | status |
|----|--------|
| 1 | 3 |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.