关于mysql if then用法

关于mysql if then用法,第1张

不知你用的是什么查询分析器。

我记得 select count(*) into @cnt from table1 where map_id = 114 and `type` = 400

if @cnt >0 then update table1 set `count` = 25 where map_id = 114 and `type` = 400

else

insert table1 (map_id,`count`,`type`) values (114,25,400)

end if

而且好像if then endif只能在procedure或是function里用吧

设置

mysql配置文件/etc/my.cnf中加入character-set-server=utf8

启动mysql服务: service mysqld start或者/etc/init.d/mysqld start

开机启动:

添加开机启动:chkconfig --add mysqld

开机启动:chkconfig mysqld on

 第一种:简单Case函数 

              case 列名

when   条件值1   then  选择项1

when   条件值2    then  选项2.......

else     默认值      end

第二种:Case搜索函数

              case  

when  列名= 条件值1   then  选择项1

when  列名=条件值2    then  选项2.......

else    默认值 end

比较: 两种格式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。

还有一个问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。如下面这个例子:

CASE col

WHEN col_1 IN ( 'a', 'b') THEN '第一类'

WHEN col_1 IN ('a')      THEN '第二类'

ELSE'其他' END

这个语句中,满足条件a永远不会返回第二类,因为按顺序发现a在第一类的时候查询就已经结束了。所以case无法用于一个东西在一个分类里有不同的属性的条件。

case when 好处很明显就是非常易于看懂,相比实现同样条件用复杂的自连接查询,在逻辑上很容易看懂(自连接查询在不同的情况下可能会有BUG)。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8536521.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存