首页 > 数据库 > MySQL > 正文

mysql条件查询if case 用法详解

2024-07-24 12:37:34
字体:
来源:转载
供稿:网友

在mysql条件查询除了使用where之外我们还可以使用像if case进行判断查询了这个比where要高级一些下面我来给大家介绍几个条件查询实例。

where条件查询,代码如下:

  1. select * from news where DATE(adddate) between  
  2. '2011-04-20' - INTERVAL 5 DAY and '2011-04-20' + INTERVAL 5 DAY 
  3.    
  4. select * from news where DATE(adddate) in ('2011-04-20','2011-04-15','2011-04-25'

IF条件语句的使用,mysql条件判断语句if的使用,先判断数据库中是否存在是否存在指定值存在就修改不存在就添加.

这里我就用啦mysql存储过程的if语句,代码如下:

  1.  DROP  PROCEDURE  IF EXISTS   过程名; 
  2. CREATE   PROCEDURE  过程名(   
  3.     IN     trueName           VARCHAR(100),          
  4.     IN     phone             VARCHAR(100),            
  5.     IN     qqmsn              VARCHAR(100),            
  6.     IN     mail               VARCHAR(100),           
  7.     IN     mac               VARCHAR(100),          
  8.     IN     heartip           VARCHAR(100)            
  9.     ) 
  10.     NOT DETERMINISTIC 
  11.     SQL SECURITY DEFINER 
  12.     COMMENT '' 
  13. BEGIN    
  14. SELECT count(id) INTO @maccount  from `表名` where `表名`.mac=mac; --是否存在此记录 
  15.  if (@maccount>0) THEN 
  16.  update  `表名`  set `trueName`=trueName,`phone`=phone,`qqmsn`=qqmsn,`mail`=mail,`mac`=mac, --Vevb.com 
  17. `heart`=`heart`+1,`heartip`=heartip,`heartdatetime`=CURRENT_TIMESTAMP WHERE 表 
  18. 名.mac=mac;  
  19. ELSE 
  20. insert into `表名` (`trueName`,`phone`,`qqmsn`,`mail`,`mac`,`heartip`,`heartdatetime`)VALUES(trueName,phone,qqmsn,mail,mac,heartip,CURRENT_TIMESTAMP); 
  21. end IF; 
  22. END 

case条件语句,代码如下:

  1. select substr(t1.area_id, 1, 1) type, 
  2.        substr(t1.area_id, 2) id, 
  3.        case substr(t1.area_id, 1, 1) 
  4.          when 'c' then 
  5.           (select t2.country 
  6.              from countnumber.dbtable_countryid t2 
  7.             where t2.id = substr(t1.area_id, 2)) 
  8.          else 
  9.           (select distinct t3.province 
  10.              from countnumber.dbtable_provinceid t3 
  11.             where t3.id = substr(t1.area_id, 2)) 
  12.        end name 
  13.   from t_ad_area t1 

在第一个方案的返回结果中,value=compare-value,而第二个方案的返回结果是第一种情况的真实结果,如果没有匹配的结果值,则返回结果为ELSE后的结果,如果没有ELSE 部分,则返回值为 NULL,代码如下:

  1. mysql> SELECT CASE 1 WHEN 1 THEN 'one' 
  2.     ->     WHEN 2 THEN 'two' ELSE 'more' END
  3.         -> 'one' 
  4. mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END
  5.         -> 'true' 
  6. mysql> SELECT CASE BINARY 'B' 
  7.     ->     WHEN 'a' THEN 1 WHEN 'b' THEN 2 END
  8.         -> NULL

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表