sql相关语句
-
distinct
:用于返回唯一不同的值SELECT DISTINCT Company FROM Orders;
-
limit 、offset
. offset X是跳过X个数据,limit Y是选取Y个数据 . limit X,Y 中X表示跳过X个数据,读取Y个数据 . 数据库数据计算是从0开始的
举例:从数据库中第三条开始查询,取一条数据,即第三条数据读取,一二条跳过
select * from testtable limit 2,1;
从数据库中的第二条数据开始查询两条数据,即第二条和第三条
select * from testtable limit 2 offset 1;
-
if、ifnull、case when then else end
. if(exp, a, b):exp为true,则结果为a,否则为b . ifnull(exp,a):exp为null,则返回a,否则返回null . case when then else end 简单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和sum结合还可以实现分段统计
select sum(case sex when 1 then 1 else 0 end) 男性,sum(case sex when 2 then 1 else 0 end) 女性,sum(case when sex <> 1 and sex <> 2 then 1 else 0 end)其他 from users
把salary表中的女改成男,男改成女:
update salary set sex = if( sex = '男','女','男');
select (case sex when '男' then '女' when '女' then '男' end ) from salary;
update salary set sex = case sex when 'f' then 'm' else 'f' end ;
DATEDIFF(expr1,expr2)
DATEDIFF()返回 expr1- expr2以从一个日期到另一个日期的天数表示的值。expr1 和expr2是日期或日期和时间表达式。在计算中仅使用值的日期部分。
mysql> SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
-> 1
mysql> SELECT DATEDIFF('2010-11-30 23:59:59','2010-12-31');
-> -31