MySQL如何更新同一表中的字段值?

时间:2018-09-22 04:58:12

标签: mysql

  • 测试1:

    更新tb_chapters t设置t.order_id =(从tb_chapters t2那里选择COUNT(*)AS c t.bid = t2.bid AND t.id> t2.id)

错误: 1093 - You can't specify target table 't' for update in FROM clause


  • 测试2:

    更新tb_chapters t设置t.order_id =(选择t2.c FROM(选择COUNT(t1.id)AS c c从tb_chapters t1其中t1.bid = t.bid AND t1.id

错误: 1054 - Unknown column 't.bid' in 'where clause'


  • 测试3:

    更新tb_chapters AS t联接(SELECT id,COUNT(id)AS c从tb_chapters t1那里t1.bid = t.bid AND t1.id

错误: 1054 - Unknown column 't.bid' in 'where clause'

1 个答案:

答案 0 :(得分:0)

  • 您可以首先在derived table中获取bid和相应的预期Count值。而且,
  • 现在,Join再次使用基表派生了表,并基于两个表使用了Update
  • 请注意,我已将您的JOIN更改为LEFT JOIN,以便将更新 0 计为不存在的情况其他id,小于特定id的{​​{1}}。
  • 利用Ifnull()函数,我们可以检查一个值是否为bid并将其设置为另一个值(在这种情况下,将上一点讨论的出价设置为0。< / li>

请尝试以下操作:

Null