可以在 SELECT 查询中使用 IF() 但不能在 UPDATE 中使用
Posted
技术标签:
【中文标题】可以在 SELECT 查询中使用 IF() 但不能在 UPDATE 中使用【英文标题】:Can use IF() in a SELECT Query but not UPDATE 【发布时间】:2012-01-01 21:30:05 【问题描述】:我一直在 SELECT 查询中使用 IF() 作为:
SELECT
IF(p.A=value,p.B,p.C) AS photo
FROM prof p
WHERE...
但是当我使用 UPDATE 和 IF() 这样的 SQL 似乎不起作用时,不能在 UPDATE 查询中使用 If() 是否正常?
UPDATE table
SET IF(p.A=value,p.B,p.C) = value2
WHERE...
【问题讨论】:
【参考方案1】:我认为你可以重新设计逻辑
p.B = if(p.A=$value, $value2, p.B), // set B=$value2 is p.A=$value
p.C = if(p.A=$value, p.C, $value2) // set C=$value2 where p.A<>$value
【讨论】:
【参考方案2】:你需要像这样使用 CASE....WHEN...THEN
UPDATE table
设置 p.A = ( 案子 什么时候 (p.A==值) 然后 价值2 别的 价值3 结尾 ) 在哪里 ......
OR you need to go here
【讨论】:
【参考方案3】:UPDATE
table
SET
value2 = (SELECT IF(p.A=value,p.B,p.C) AS photo FROM prof p WHERE table.id=...)
仅限 mysql 4.1+
【讨论】:
【参考方案4】:您不能分配 IF 表达式的结果,因为它不直接存储在表中。 update 语句期望集合表达式的左侧是列名。
【讨论】:
以上是关于可以在 SELECT 查询中使用 IF() 但不能在 UPDATE 中使用的主要内容,如果未能解决你的问题,请参考以下文章
在 ABAP 中使用一个或多个 IF 语句的 SELECT 查询
Impala 可以从表中执行 COUNT(*) 但不能执行 SELECT *