php - 如何在 IN 中正确使用 CASE WHEN/THEN/ELSE?

标签 php mysql sql sql-update

这是我的查询:

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 (...)”有效吗?我怎样才能做这样的测试?

最佳答案

在更新语句中使用 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

关于php - 如何在 IN 中正确使用 CASE WHEN/THEN/ELSE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34367543/

相关文章:

php - 如何在 Cake 3 的表模型文件中设置数据源?

java - 如何摆脱 HTML 形式的字符

javascript - 从数据库中检索后解码 base64 图像失败

mysql - ColdFusion/Railo 脚本中出现 SQL 错误 "new query()"

php - 如何知道mysql表中生成的唯一键的名称?

php - ob_start 缓存 CSS

php - 脚本试图执行方法或访问不完整对象的属性

mysql - 多个 WHERE、LIKE 条件

c# - 在 .Net 中测试复杂的 T-SQL 脚本?

mysql - 一起使用 ORDER BY 和 GROUP BY