簡體   English   中英

如何正確使用CASE WHEN / THEN / ELSE IN?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM