English 中文(简体)
质量指数和PHP的多种条件更新
原标题:Multiple conditions bulk update in SQL & PHP
  • 时间:2009-08-28 13:48:31
  •  标签:

如果我想根据情况更新一栏价值基数,那么我就只能使用下面的电 que+1-1案件(当然改为适当的PHP电话或ORM等值):

UPDATE articles SET STATUS = 0 WHERE STATUS  = 1;

但现在的问题是,我想根据原来的<代码>status,从字典中引出新的数值status。 假定独裁者就是这样:

dict[ 1 ]= 3 
dict[ 12 ]= 2 
dict[ 6 ]= 2 

关键价值乳房之间没有关系。

如何写这句话?

www.un.org/Depts/DGACM/index_spanish.htm Edit: Question edit. 我 t了这个问题的恰当框架......ry!

问题回答

如果你有少量地图,你可以使用<条码>查询/编码>说明。

BEGIN TRAN

UPDATE articles
SET status = 
       case 
          when status=1 then 3 
          when status=12 or status=6 then 2 
          else status --leave it unchanged if it doesn t match a case
       end

--COMMIT OR ROLLBACK

否则,按照rwmnau的建议采用绘图表方法。

使用分局:

UPDATE articles AR SET status = (SELECT value FROM dict WHERE key = AR.status)

当然,我假定,你有词汇储存在你的数据库中。

如何做这样的事情:

UPDATE articles
   SET status = n.new
  FROM articles a
  JOIN NewStatus n
    ON a.status = n.status

这样,你就有一个称为“新情况”的表,分两栏——一个称为“地位”,具有你现有地位,另一个称为“新”的表格,你希望更新。 加入该表后,将做更新,并解决。 而且,如果存在任何情况,你不想更新,那么就没有把这些情况列入你的新情况表,那么,在更新说明中,就会有ll。

就像问题得到修改一样,这样,如果我没有点,请让我知道!

既然你的问题不明确,你似乎正在混合法典,你可以做这样的事情(如eu):

StringBuilder sb = new StringBulder();

for (Map.Entry<Integer,Integer> entry : codes.entrySet) {

    sb.append(
      String.format("UPDATE articles SET Status=%s WHERE Status=%s
", entry.getValue(), entry.getKey() 
       );

}

String sqlToExecute = sb.toString();
System.out.println(sqlToExecute);

这将使你得以进行变革。 如果这部法典将越多越好,那么便可以删除“强硬格式”,而是使用准备的声明。





相关问题
热门标签