【问题标题】:Can use IF() in a SELECT Query but not UPDATE可以在 SELECT 查询中使用 IF() 但不能在 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...

【问题讨论】:

    标签: php mysql select if-statement


    【解决方案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 语句期望集合表达式的左侧是列名。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-11-19
            • 1970-01-01
            • 2021-03-25
            • 1970-01-01
            相关资源
            最近更新 更多