【问题标题】:WHERE id IN doesn't work in UPDATEWHERE id IN 在 UPDATE 中不起作用
【发布时间】:2011-02-14 14:35:30
【问题描述】:

UPDATE statistics'
SET money = money + '$money'
WHERE member_id IN
((SELECT member_id FROM races WHERE l_id = '$mem_id'), $other_id)

这有什么问题?我想从比赛中检索所有 member_ids,还包括 member_id $other_id。没有 $other_id 它可以工作。

顺便说一句,它给了我“子查询返回超过 1 行”的错误。

【问题讨论】:

    标签: php mysql mysql-error-1242


    【解决方案1】:

    另一种方法:

    (SELECT member_id FROM races WHERE l_id = '$mem_id'
    UNION
    SELECT $other_id)
    

    【讨论】:

      【解决方案2】:

      尝试:

      UPDATE statistics
         SET money = money + $money
       WHERE member_id IN (
             SELECT member_id
               FROM races
              WHERE l_id = $mem_id 
             )
          OR member_id = $other_id
      

      并且建议 - 对于 int 类型的列不要使用撇号。

      【讨论】:

      • 太棒了!完美运行。非常感谢。 :)
      • "对于 int 类型的列不要使用撇号。"我已经用addslashes()函数保护了它,所以我觉得没问题,不是吗?
      • 对于字符串 - 好的,但我更喜欢 mysql_escape_string()。如果您使用整数、浮点数等 - 将它们投射到 $id = (int) $_GET['id'];(或 (float) 等)就足够了。
      【解决方案3】:

      子查询返回 member_id 和 $other_id

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多