精华内容
下载资源
问答
  • I'm trying to update a set of records (boolean fields) in a single query if possible.The input is coming from paginated radio controls, so a given POST will have the page's worth of IDs with a true or...

    bd96500e110b49cbb3cd949968f18be7.png

    I'm trying to update a set of records (boolean fields) in a single query if possible.

    The input is coming from paginated radio controls, so a given POST will have the page's worth of IDs with a true or false value.

    I was trying to go this direction:

    UPDATE my_table

    SET field = CASE

    WHEN id IN (/* true ids */) THEN TRUE

    WHEN id IN (/* false ids */) THEN FALSE

    END

    But this resulted in the "true id" rows being updated to true, and ALL other rows were updated to false.

    I assume I've made some gross syntactical error, or perhaps that I'm approaching this incorrectly.

    Any thoughts on a solution?

    解决方案

    Didn't you forget to do an "ELSE" in the case statement?

    UPDATE my_table

    SET field = CASE

    WHEN id IN (/* true ids */) THEN TRUE

    WHEN id IN (/* false ids */) THEN FALSE

    ELSE field=field

    END

    Without the ELSE, I assume the evaluation chain stops at the last WHEN and executes that update. Also, you are not limiting the rows that you are trying to update; if you don't do the ELSE you should at least tell the update to only update the rows you want and not all the rows (as you are doing). Look at the WHERE clause below:

    UPDATE my_table

    SET field = CASE

    WHEN id IN (/* true ids */) THEN TRUE

    WHEN id IN (/* false ids */) THEN FALSE

    END

    WHERE id in (true ids + false_ids)

    展开全文
  • oracle之update set case when

    千次阅读 2018-09-19 10:49:09
    问题背景 例如我有一个按钮,负责启用停用,...这个时候就可以这样了,update中使用case when进行判断,再set对应的值进去 UPDATE CT_BD_CUSTOMERDISCOUNT T SET T.ISSTOP = (CASE WHEN T.ISSTOP = 'N' THEN ...

    问题背景

    例如我有一个按钮,负责启用和停用,那么怎么处理呢

    使用方法

    这个时候就可以这样了,update中使用case when进行判断,再set对应的值进去

    UPDATE CT_BD_CUSTOMERDISCOUNT T
       SET T.ISSTOP = (CASE
                        WHEN T.ISSTOP = 'N' THEN
                         'Y'
                        WHEN T.ISSTOP = 'Y' THEN
                         ''
                        ELSE
                         'Y'
                      END)
               where ........;
    
    展开全文
  • update和case结合

    万次阅读 2017-02-09 16:25:17
    做数据库重构之后做数据导入需要将字符串转换为int类型,转换的情况太多于是采用了update和case语句结合,果然省了很多的SQLUPDATE test SET avg_discount_area = ( CASE WHEN avg_discount_area ='9.5折以上' ...

    做数据库重构之后做数据导入需要将字符串转换为int类型,转换的情况太多于是采用了update和case语句结合,果然省了很多的SQL

    UPDATE test
    SET avg_discount_area = (
    	CASE
    	WHEN avg_discount_area ='9.5折以上' THEN 0
    WHEN avg_discount_area ='(8.0~8.5)折' THEN 1
    WHEN avg_discount_area ='(6.5~8.0)折' THEN  2
    WHEN avg_discount_area ='(4.0~6.5)折' THEN 3
    WHEN avg_discount_area='(2.5~4.0)折' THEN 4
    WHEN avg_discount_area='(1.0~2.5折)' THEN 5
    WHEN avg_discount_area = '1折以下' THEN 6
    WHEN avg_discount_area = '无数据' THEN 7
    else 8
    END
    );
    
    展开全文
  • Oracle--(case when then else end )(update set replace)的用法

    1、update set replace

    update `表名` set 字段名 =replace(字段名, '查找的内容','更改的内容') where 字段名 like '%查找的内容%';
    update shangpinTable set click_url=replace(click_url,'21508360','1111111111') where click_url like '%21508360%';
    --------------------------------------------------------------------------------------------------
    2、case when 
    case具有两种格式。简单case函数和case搜索函数。
    --简单case函数
                case sex
                when '1' then '男'
                when '2' then '女'
                else '其他' end
    --case搜索函数
                case when sex = '1' then '男'
                when sex = '2' then '女'
                else '其他' end
    这两种方式,可以实现相同的功能。简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判定式。 
    还有一个需要注重的问题,case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略。
    --比如说,下面这段sql,你永远无法得到“第二类”这个结果
                case when col_1 in ( 'a', 'b') then'第一类'
                when col_1 in ('a')       then '第二类'
                else'其他'end
    原文:http://blog.csdn.net/xuxurui007/article/details/8479953

    -----------------------------------------------------------------------------------------------------

    3.decode函数

    decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
    该函数的含义如下:
    IF 条件=值1 THEN
        RETURN(翻译值1)
    ELSIF 条件=值2 THEN
        RETURN(翻译值2)
        ......
    ELSIF 条件=值n THEN
        RETURN(翻译值n)
    ELSE
        RETURN(缺省值)
    END IF
    decode(字段或字段的运算,值1,值2,值3)
           这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3
     当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多

    使用方法: 
    1、比较大小
    select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值
    sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
    例如:
    变量1=10,变量2=20
    则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。
    2、此函数用在SQL语句中,功能介绍如下:
        Decode函数与一系列嵌套的 IF-THEN-ELSE语句相似。base_exp与compare1,compare2等等依次进行比较。如果base_exp和 第i 个compare项匹配,就返回第i 个对应的value 。如果base_exp与任何的compare值都不匹配,则返回default。每个compare值顺次求值,如果发现一个匹配,则剩下的compare值(如果还有的话)就都不再求值。一个为NULL的base_exp被认为和NULL compare值等价。如果需要的话,每一个compare值都被转换成和第一个compare 值相同的数据类型,这个数据类型也是返回值的类型。
    结合Lpad函数,如何使主键的值自动加1并在前面补0
    select LPAD(decode(count(记录编号),0,1,max(to_number(记录编号)+1)),14,'0') 记录编号 from tetdmis
    比如我要查询某班男生和女生的数量分别是多少?通常我们这么写:
    select count(*) from 表 where 性别 = 男;
    select count(*) from 表 where 性别 = 女;
    要想显示到一起还要union一下,太麻烦了

    用decode呢,只需要一句话
    select sum(decode(性别,男,1,0)),sum(decode(性别,女,1,0)) from 表

    eg:
    select sum(decode(siteno,'LT',1,0)),sum(decode(siteno,'SZ',1,0)) from facd605;
    select sum(case siteno when 'LT' then 1 else 0 end),sum(case siteno when 'SZ' then 1 else 0 end) from facd605;





    展开全文
  • 1 UPDATE standard_title 2 SET property = 3 CASE 4 WHEN (SUBSTRING_INDEX(substring(standard_num,INSTR(standard_num,"/"),LENGTH(standard_num))," ",1) = "/T") > 0 THEN 5 ...
  • mysql case when update

    2018-04-03 14:49:28
    需求是根据某个字段的值不同,修改相对应的另一个字段,于是就...有种简单的情况是只需要判断某个字段的值就可以确定另一个字段的值:UPDATE mytalbe SET propertyA = CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHE
  • 转自:https://leetcode-cn.com/problems/swap-salary/solution/jiao-huan-gong-zi-by-leetcode/ 方法一: UPDATE salary SET sex = CASE sex WHEN 'm' THEN 'f' ELSE 'm' END; 方法二: UPDATE sala...
  • mysql> delimiter //mysql> UPDATE `sss` SET-> `sscore` =-> CASE-> WHEN `saddress` LIKE '%北京%'-> THEN (`sscore` + 1)-> WHEN `saddress` LIKE '%河南%'-&g...
  • update employee_test b JOIN (select empid,page,index_num,page * index_num as tindex from employee_test where (page - 1) * 600 + index_num <n order by page desc)a on a.empid = b.empid set b.page...
  • update work_order set order_num=100,mate_state = case when mate_state=2 then mate_state-1 else mate_state end where order_id='123'; 这段语句的意思是work_order表中order_id为123的数据的order_num更新为...
  • Mysql 一条SQL语句实现批量更新数据,update结合case、whenthen的使用案例 如何用一条sql语句实现批量更新?MySQL并没有提供直接的方法来实现批量更新,但是可以用点小技巧来实现。 复制代码 代码如下: UPDATE...
  • select ident_current('表名')+1 下一值 IDENT_INCR ( 'table_or_view' ) -- 获得步长 IDENT_SEED ( 'table_or_view' ) -- 获得种子update tbl_recordsLog set acStockId=(case wh...
  • 标签:当where里面的条件出现null造成的查询失败后会自动修改去掉and或者or,还会选择执不执行where语句,一样,用于去掉多余的逗号。 可参考 标签同理: 当 update 语句中没有使用 if 标签时,如果有一个参数为 ...
  • 本文将简单介绍数据的插入更新,包括关键字insert、updatecase等一、插入数据常见的插入方式有以下几种:1、insert into + setinsert into table_nameset column1=value1, column2=value2, column3=value3;...
  • msql if和case

    2018-07-10 21:22:09
    运行结果是更新sex,如果sex为m更新为f,否则更新为mcaseUPDATE salary SET sex = (CASE WHEN sex = 'm' THEN 'f' ELSE 'm' END)结果上面的if语句一样主要是leetcode里面一道题要求只用一次更新语句并且没有中间...
  • 如何用一条sql语句实现批量更新...复制代码 代码如下:UPDATE mytable SETmyfield = CASE idWHEN 1 THEN 'value'WHEN 2 THEN 'value'WHEN 3 THEN 'value'ENDWHERE id IN (1,2,3);这里使用了case when 这个小技巧来实...
  • update语句结合case when例子: 根据master_idclass_idx来更新数据 如图: sql语句:update table_name set ins_comp_id='111',bxgs_fl_id='111', total_money =  case class_idx when 'JQX' then '900' when ...
  • 如何用一条sql语句实现批量更新?...复制代码 代码如下:UPDATE mytable SET myfield = CASE id WHEN 1 THEN 'value' WHEN 2 THEN 'value' WHEN 3 THEN 'value' END WHERE id IN (1,2,3);这里使用了case when 这...
  • mysql 中的case when ifnull判断

    千次阅读 2016-01-27 10:02:48
    mysql 在查询更新sql中都可以进行判断,下面根据我这两条sql看下case ...update t_tradefee set margin_profit = (case when market_price is null then (2.3-basic_fee)*remain_amount else (2.3-market_price)*rem
  • update salary set sex = IF(sex = 'm', 'f', 'm'); 啥看不懂啊,我也不懂,然后我看的这个。这个太猛了。 条件判断,IF(condition,arg1, arg2)如果condition为真,arg1,否则arg2 解法2,case when UPDATE ...
  • UPDATE salary SET sex = CASE sex WHEN "m" THEN "f" ELSE "m" END ; SELECT *,CASE sex WHEN 'f' THEN 'm' ELSE 'f' END AS 'change' FROM `salary` SELECT *,IF (sex='f','m','f') AS 'change' FROM `salary`
  • 描述:给定一个 salary表,如下所示,有m=男性 f=女性的值 。交换所有的 f m 值(例如,将所有 f 值更改为 m,反之亦然)。要求使用一个更新查询,并且没有中间临时...update salary set sex = case when sex='m...
  • 描述:给定一个 salary表,如下所示,有m=男性 f=女性的值 。交换所有的 f m 值(例如,将所有 f 值更改为 m,反之亦然)。要求使用一个更新查询,并且没有中间临时...update salary set sex = case when sex='m...
  • <pre><code>update table set colomn1=val1 and colomn2=val2 when colomn1=value else set colomn1=val11 and colomn2=val22 when colomn1=otherValue </code></pre> <p>please help </div>
  • 描述: 给定一个 salary表,如下所示,有m=男性 f=女性的值 。交换所有的 f m 值(例如,将所有 f 值更改为 m,反之亦然)。要求使用一个更新查询,并且没有中间临时表。...update salary set sex ...
  • In the best case I'd need some solution with identifying the set properties, getting their <em>SQL</em> field names (probably from the tags) and then I should be able to build the <code>UPDATE</code> ...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 295
精华内容 118
关键字:

set和caseupdate