IF()在sql语句中的特殊用法
SQL语句:
SELECT IF ( MIN(createDate) = MAX(createDate), NOW(), MAX(createDate)) startTime from department
分析:
其中 IF ( MIN(createDate) = MAX(createDate), NOW(), MAX(createDate)) 就用到了 if(判断条件,true,false) 的形式。当MIN(createDate) = MAX(createDate) 为true 时,结果就为now(),结果为false的时候就为MAX(createDate)
IF(expr1,expr2,expr3)
如果 expr1 为真(expr1 <> 0 以及 expr1 <> NULL),那么 IF() 返回 expr2,否则返回 expr3。IF() 返回一个数字或字符串,这取决于它被使用的语境:
ysql> SELECT IF(0.1,1,0);
-> 0
mysql> SELECT IF(0.1<>0,1,0);
-> 1
在上面第一种情况下,IF(0.1) 返回 0,是因为 0.1 被转换为一个整数值,返回 IF(0) 的测试结果。这可能不是你所期望的。在第二种情况下,比较测试原浮点数是否为一个非零值。比较的结果被作为整数使用。 缺省的 IF() 返回值类型 (当结果存储在临时表中时,这是非常重要的) 在 MySQL 3.23 中按下列方式确定: 表达式 返回值
limit,offset
SELECT keyword FROM `keyword_rank` WHERE advertiserid='59'
ORDER BY keyword LIMIT 2 OFFSET 1;
比如这个SQL ,limit后面跟的是2条数据,offset后面是从第1条开始读取
SELECT keyword FROM `keyword_rank` WHERE advertiserid='59'
ORDER BY keyword LIMIT 2 ,1;
而这个SQL,limit后面是从第2条开始读,读取1条信息。
分页:SQL_CALC_FOUND_ROWS
SELECT FOUND_ROWS();
这样只要执行一次较耗时的复杂查询可以同时得到与不带limit同样的记录条数