注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

@fc_lamp

关注Web应用解决方案MySql/PHP/Python一盏名为"飞川"的灯~

 
 
 

日志

 
 

MySQL TIPS(一次性批量更新不同值)  

2016-07-13 10:52:20|  分类: Web技术-Mysql |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
一 case when.... 计算条件列表并返回多个可能结果表达式

SELECT <myColumnSpec> = 
CASE 
WHEN <A> THEN <somethingA> 
WHEN <B> THEN <somethingB> 
ELSE <somethingE> 
END

例如用于查询:

SELECT 
    Title, 
    'Price Range' = 
    CASE 
        WHEN price IS NULL THEN 'Unpriced' 
        WHEN price < 10 THEN 'Bargain' 
        WHEN price BETWEEN 10 and 20 THEN 'Average' 
        ELSE 'Gift to impress relatives' 
    END 
FROM titles 
ORDER BY price 


用于数据批理更新: 
UPDATE tbl_test SET val = CASE id WHEN 1 THEN 2 WHEN 2 THEN 3 END WHERE id IN(1, 2);

update test set varchar_= case char_ when 1 then 'a' when 2 then 'b' when 3 then 'c' end where char_ in(1,2)

批量更新多个字段:
UPDATE categories
    SET display_order = CASE id
        WHEN THEN 3
        WHEN THEN 4
        WHEN THEN 5
    END,
    title = CASE id
        WHEN THEN 'New Title 1'
        WHEN THEN 'New Title 2'
        WHEN THEN 'New Title 3'
    END
WHERE id IN (1,2,3)
参考:http://www.ghugo.com/update-multiple-rows-with-different-values-and-a-single-sql-query/

二  find_in_set.....字符串str 在由N 子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间

FIND_IN_SET(str,strlist) 

例如:返回多条记录 

select * from test where FIND_IN_SET(id,'1,2,3,4,5');


  评论这张
 
阅读(62)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017